我试图使用外部编译对象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 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top