Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force GNU linker to generate 32 bit ELF executables

Tags:

Hi I am currently generating x86 assembly for a compiler that I am writing and am having some trouble linking the file on my 64-bit VM (the assembly code is 32 bit).

I was able to assemble the object file fine with this command:

as --32 mult.S -o mult.o 

but I can't seem to find any options for ld that make it generate a 32-bit ELF file:

ld <some-option?> mult.o -o mult 

Any help would be great.

like image 234
Hunter McMillen Avatar asked Apr 14 '13 20:04

Hunter McMillen


1 Answers

ld <some-option?> mult.o -o mult

ld -m elf_i386 mult.o -o mult 

You can get a list of available architectures with:

ld -V 

Sample output:

GNU ld (GNU Binutils for Ubuntu) 2.24   Supported emulations:    elf_x86_64    elf32_x86_64    elf_i386    i386linux    elf_l1om    elf_k1om    i386pep    i386pe 

However, that shouldn't be necessary: ld looks at the first object, and should automatically select emulation based on the format of that object.

like image 56
Employed Russian Avatar answered Oct 07 '22 00:10

Employed Russian