2013-04-14 24 views
11

Merhaba Şu an yazdığım bir derleyici için x86 derlemesi oluşturuyorum ve 64 bit VM'imde (montaj kodu 32 bit) dosyayı bağlarken sorun yaşıyorum. 32 bit ELF yürütülebilir dosyaları üretmek için GNU bağlayıcıya zorlayın

Ben bu komutla nesne dosyası cezası araya başardı:

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

ama 32 bit ELF dosyası oluşturmak yapmak ld yönelik hiçbir seçenek bulmak gibi olamaz:

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

Herhangi bir yardım harika olurdu.

cevap

19

ld -m elf_i386 mult.o -o mult 

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

Sen ile mevcut mimarileri bir listesini alabilirsiniz:

ld -V 

Numune çıkışı: Ancak

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 

, o olmamalı gerekli: ld l İlk nesneye bakar ve o nesnenin formatına göre otomatik olarak öykünmeyi seçmelidir.

+1

Teşekkür ederim, aslında kendimi birkaç dakika önce buldum. Bunu yapmam gerektiğini umuyordum ama bir sebepten dolayı hala uyumsuz bir mimarim olduğunu söyledi. –

+0

"Elf32_x86_64" ve "i386linux", elf_l1om gibi zor olanları açıklayabilir mi? –

+0

elf_i386'nın ne yaptığını sorabilir miyim? El ile aradım ama bulamadım – paradox

İlgili konular