ฉันตัดสินใจเลิกและถามผู้เชี่ยวชาญกับคุณหลังจากเวลาผ่านไปหลายชั่วโมง ฉันกำลังพยายามสร้างแอปพลิเคชั่น 32 บิต (xgap ถ้าใครสนใจ) ใน 64 Ubuntu 11.10 ของฉัน ฉันเพิ่มCFLAGS = -m32และLDFLAGS = -L / usr / lib32ใน makefile วัตถุนั้นถูกสร้างขึ้นให้มีขนาด 32 บิต ขั้นตอนสุดท้ายคือการเชื่อมโยงวัตถุและไลบรารีทั้งหมดสำหรับ X windows เข้ากับไฟล์เรียกทำงาน --- xgap อย่างใดมันทำให้ฉันข้อผิดพลาดนี้:
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และmutilibแล้ว ฉันคิดว่าฉันต้องบังคับให้ลิงเกอร์สร้างเอาต์พุต i386 ผมพยายามที่จะใส่สองLDธงในคำสั่ง gcc ของฉันเป็นที่ปรากฏข้างต้น: -melf_i386และ-oformat elf32-i386 แต่สิ่งที่เกิดขึ้นคือ gcc ไม่ได้ค้นหาไลบรารี่ 32 บิตใน/ usr / lib32อีกต่อไป ฉันสงสัยว่าฉันจำเป็นต้องใส่ค่าสถานะเหล่านั้นในการแก้ไขบางอย่าง?
ขอบคุณสำหรับความคิดและความช่วยเหลือ!
แก้ไข: เมื่อฉันเพิ่มแฟล็ก -m32 ในคำสั่ง gcc สุดท้ายของฉัน (ขั้นตอนการลิงก์ที่ฉันเชื่อ) แม้ว่าฉันจะมีแฟล็ก -L / usr / lib32 อยู่ก็ตาม gcc ไม่ค้นหาใน / usr / lib32 อีกต่อไป (จริงๆ แปลก ... ) และสร้างข้อผิดพลาดต่อไปนี้:
/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
มีใครมีความคิดว่าทำไมสิ่งนี้เกิดขึ้น? ฉันใช้เครื่องมืออัตโนมัติเพื่อกำหนดค่าและทำ ฉันเก่งในการแก้ไขไฟล์สคริปต์เหล่านั้น
EIDT : ฉันแก้ไขปัญหา ฉันคิดว่าgccกำลังคาดหวังว่าจะมีการเก็บถาวรไลบรารีแบบคงที่ ฉันใช้สคริปต์getlibsจากhttp://ubuntuforums.org/showthread.php?t=474790เพื่อดาวน์โหลดไฟล์เก็บถาวร. a ทั้งหมดที่จำเป็นสำหรับการเชื่อมโยง จากนั้นgccก็ทำงานได้ ฉันคิดว่าgccทำการค้นหาในไดเรกทอรี / usr / lib32แต่ไม่พบ ไฟล์เก็บถาวร. aดังนั้นจึงทำการค้นหาในไดเรกทอรีมาตรฐานซึ่งเป็น/ usr / libซึ่งพบไฟล์ที่เข้ากันไม่ได้* .so
แต่คำถามก็คือไฟล์* .soใน/ usr / lib32 /จากแพ็คเกจia32-libsไม่มีไลบรารีที่จำเป็นสำหรับการลิงก์หรือไม่? ไฟล์เหล่านั้นใน/ usr / lib32 /ใช้ทำอะไร?