Saatlerce çalıştıktan sonra, pes etmeye ve uzmanlara sormaya karar verdim. Benim 64 Ubuntu 11.10 benim 32-bit bir uygulama (ilgilenen varsa xgap) oluşturmaya çalışıyorum. Makefile'de CFLAGS = -m32 ve LDFLAGS = -L / usr / lib32 ekledim. Nesneler 32 bit ince yapılı. Son adım, X pencereleri için tüm nesneleri ve kitaplıkları bu yürütülebilir --- xgap içine bağlamaktır. Her nasılsa bana bu hatayı veriyor:
gcc -o xgap xcmds.o utils.o gapgraph.o gaptext.o pty.o popdial.o xgap.o selfile.o -L/usr/lib32 -lXaw -lXmu -lXt -lXext -lX11 -lSM -lICE
/usr/bin/ld: skipping incompatible /usr/lib32/libXmu.so when searching for -lXmu
...
/usr/bin/ld: i386 architecture of input file 'xcmds.o' is incompatible with i386:x86-64 output
...
ia32-libs ve mutilib desteği 'yi yükledim. Sanırım bağlayıcıyı bir i386 çıktısı üretmek için zorlamak zorundayım. Yukarıda gösterildiği gibi gcc komutuma iki tane ld bayrağı koymaya çalıştım: -melf_i386 ve -oformat elf32-i386 . Ama ne olur, gcc artık / usr / lib32 içinde 32 bit kitaplığı aramaz. Bu bayrakları belirli bir sıraya koymam gerekip gerekmediğini merak ediyorum.
Herhangi bir fikir ve yardım için teşekkürler!
DÜZENLEME: son gcc komutumda (inandığım bağlantı aşamasına) -m32 bayrağını eklediğimde, -L / usr / lib32 bayrağı yerinde olsa bile, gcc / usr / lib32 içinde arama yapmıyor artık (gerçekten garip ...) ve aşağıdaki hatayı üretir:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../libXaw.so when searching for -lXaw
/usr/bin/ld: skipping incompatible /usr/lib/libXaw.so when searching for -lXaw
/usr/bin/ld: cannot find -lXaw
collect2: ld returned 1 exit status
Bunun neden olduğu hakkında bir fikri olan var mı? Yapılandırmak ve yapmak için otomatik aracı kullanıyorum. Bu betik dosyalarını değiştirmekte gerçekten iyiyim.
EIDT : Sorunu çözdüm. Bence gcc bir statik kütüphane arşivi bekliyordu. Bağlantı için gereken tüm .a arşivlerini indirmek için İşte adresinden getlibs komut dosyasını kullandım. . Sonra gcc çalıştı. / usr / lib32 dizininde gcc araması yaptım, ancak .a arşivlerini bulamadık. Bu nedenle standart dizinde arama yaptık / usr / lib olan *. dosyalarının uyumsuz olduğu yer.
Ancak, soru şu: ia32-libs paketindeki / usr / lib32 / içindeki * .s dosyaları gerçekten değil bağlanması için kütüphanelere ihtiyaç var mı? / usr / lib32 / dosyasında kullanılan dosyalar nedir?