gcc错误:错误的ELF类:ELFCLASS64

时间:2008-10-19 04:19:50

标签: gcc makefile

我试图使用外部编译对象coreset.o编译程序。我写了public01.c测试文件,我的函数在calculate.c中,两者都编译。然而它没有把它连接在一起。可能是什么问题?

gcc -o public01.x public01.o computation.o coreset.o
ld: fatal: file coreset.o: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to public01.x
collect2: ld returned 1 exit status

5 个答案:

答案 0 :(得分:35)

我认为coreset.o是为64位编译的,你将它与32位计算结合起来.o。

您可以尝试使用gcc(1)的“-m64”标志重新编译calculate.c

答案 1 :(得分:7)

您可以指定'-m32'或'-m64'来选择编译模式。

在处理autoconf(configure)脚本时,我通常在环境中设置CC =“gcc -m64”(或CC =“gcc -m32”),以便使用正确的bittiness编译所有内容。至少,通常......人们会找到无穷无尽的方法来制作不太合适的东西,但我的击球率非常高(超过95%)。

答案 2 :(得分:4)

事实证明我使用的编译器版本与使用coreset.o完成的编译版本不匹配。

一个是32位,另一个是64位。如果其他人遇到类似的问题,我会留下这个。

答案 3 :(得分:4)

看起来目标文件是在64位工具链上编译的,而你使用的是32位工具链。您是否尝试过以32位模式重新编译目标文件?

答案 4 :(得分:2)

sudo apt-get install ia32-libs