2012-03-11 81 views
0

我想一些.o文件带链接:GCC i386体系结构上

gcc -m32 send.o lib.o -o send 

,我也得到:

/usr/bin/ld: i386:x86-64 architecture of input file `send.o' is incompatible with i386 output 
/usr/bin/ld: final link failed: Invalid operation 
collect2: ld returned 1 exit status 

我已经安装了 的libc6-i386的 GCC-multilib的 IA32 -lib

问题出在哪里?

回答

2

你不是在编译。您正在链接已编译的对象文件。看来,send.o被编译为x86_64对象(不带-m32)。您无法链接来自32位对象文件的64位可执行文件。

确保所有目标文件都是以32位模式编译的。

+0

对不起,我只是把它们连起来。我试过也没有用-m32,它没有工作,我确定这些文件是在x86架构上编译的。 – yonutix 2012-03-11 22:09:39

+0

因此,然后lib.o是ELF32,它与64位输出不兼容。 – 2012-03-11 22:41:13

+0

当你使用-m32进行链接时,你会得到什么错误信息? 'file send.o lib.o'的输出是什么? – Ray 2012-03-13 01:28:17

相关问题