Saatlerce süren yorulmadan sonra pes etmeye ve uzmanlara sormaya karar veriyorum. 64 Ubuntu 11.10'umda 32 bitlik bir uygulama (ilgilenen varsa xgap) oluşturmaya çalışıyorum. I ilave CFLAGS = -m32 ve LDFLAGS = -L / usr / lib32 makefile. Nesneler 32 bit para cezası içine yerleştirilmiştir. Son adım, X pencerelerinin tüm nesnelerini ve kitaplıklarını bu çalıştırılabilir --- xgap'a 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
...
Ben yüklemiş ia32-kütüphanelerini ve mutilib destek . Sanırım linkeri bir i386 çıktısı oluşturmaya zorlamam gerekiyor. İki koymak için çalıştı ld : yukarıda gösterildiği gibi benim gcc komutu bayrakları -melf_i386 ve -oformat elf32-i386 . Fakat olan şu ki, gcc artık / usr / lib32 içindeki 32 bit kütüphaneyi aramıyor . Bu bayrakları sabit bir sıraya koymam gerekip gerekmediğini merak ediyorum.
Herhangi bir fikir ve yardım için teşekkürler!
EDIT: Son gcc komutuma -m32 bayrağını eklediğimde (inanıyorum bağlama aşaması), -L / usr / lib32 bayrağını yerinde tutsam bile, gcc artık / usr / lib32 içinde arama yapmıyor (gerçekten garip ...) ve aşağıdaki hatayı oluşturur:
/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 fikri olan var mı? Yapılandırmak ve yapmak için otomatik aracı kullanıyorum. Bu komut dosyalarını değiştirmek konusunda gerçekten çok iyiyim.
EIDT : Sorunu çözdüm . Bence gcc statik bir kütüphane arşivi bekliyordu. Bağlantı için gerekli tüm .a arşivlerini indirmek için http://ubuntuforums.org/showthread.php?t=474790 adresindeki getlibs komut dosyasını kullandım . Sonra gcc çalıştı. Bence gcc içinde arama yaptı / usr / lib32 dizinine ama bulamadık .a arşivleri böyledir standart dizinde arama devam etti / usr / lib o uyumsuz bulur .bu * dosyaları.
Ama o zaman soru şudur: ia32-libs paketindeki / usr / lib32 / içerisindeki * .so dosyalarında bağlantı için gerekli kütüphaneler gerçekten yok mu? / Usr / lib32 / içindeki bu dosyalar ne için kullanılıyor?