题
我试图使用外部编译对象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
解决方案
我认为coreset.o是为64位编译的,你将它与32位计算结合起来.o。
您可以尝试使用 gcc的'-m64'标志重新编译calculate.c (1)
其他提示
您可以指定'-m32'或'-m64'来选择编译模式。
在处理autoconf(configure)脚本时,我通常设置CC =" gcc -m64" (或CC =“gcc -m32”)在环境中,以便用正确的bittiness编译所有内容。至少,通常......人们会找到无穷无尽的方法来制作不太合适的东西,但我的击球率非常高(超过95%)。
事实证明我使用的编译器版本与使用coreset.o完成的编译版本不匹配。
一个是32位,另一个是64位。如果其他人遇到类似的问题,我会留下这个。
看起来目标文件是在64位工具链上编译的,而你使用的是32位工具链。您是否尝试过以32位模式重新编译目标文件?
sudo apt-get install ia32-libs
不隶属于 StackOverflow