在经过数小时的谷歌搜索后,我决定放弃并向专家们请教。我正在尝试在我的64位Ubuntu 11.10上构建一个32位应用程序(如果有人感兴趣,它是xgap)。我在makefile中添加了CFLAGS=-m32和LDFLAGS=-L/usr/lib32。对象已经成功地构建为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输出。我尝试在gcc命令中放入两个ld标志,如上所示:-melf_i386和-oformat elf32-i386。但是发生的情况是,gcc不再在/usr/lib32中搜索32位库。我想知道是否需要按某种固定顺序放置这些标志?
感谢您的任何想法和帮助!
编辑:当我在最后一个gcc命令(我相信是链接阶段)中添加-m32标志时,即使我已经放置-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
有人知道这为什么会发生吗?我正在使用自动化工具进行配置和编译。我擅长修改这些脚本文件。