链接时跳过不兼容的错误

时间:2010-08-23 18:32:28

标签: c compiler-errors intel

我正在使用intel C编译器编译64位架构。在不同的64位英特尔架构上构建相同的代码。

现在当我尝试构建二进制文件时,我收到一条消息“Skipping incompatible ../../libtime.a”或者其他一些东西,这表明我存档的libtime.a(来自某些目标文件我编译)不兼容。我用谷歌搜索,似乎这通常是32位> 64位转换或类似的结果,但英特尔C编译器似乎在编译时似乎不支持-64或其他一些内存选项。如何排除故障并修复此错误?

2 个答案:

答案 0 :(得分:1)

您不能混用64位和32位编译代码。配置Linux are here的说明。

答案 1 :(得分:1)

您需要确定库和您正在构建的新代码的目标处理器。这可以通过几种方式完成,但最简单的是:

$ objdump -f ../../libtime.a otherfile.o

对于libtime,这可能会打印出一堆东西,但它们都应该具有相同的目标处理器。确保otherfile.o(您应该替换其中一个目标文件)也具有相同的体系结构。

gcc具有-m32和-m64标志,用于从默认目标切换到具有不同寄存器和内存宽度的类似处理器(通常为x86和x86_64),英特尔C编译器也可以使用这些标记。

如果这没有用,那么你应该包括用于编译所有内容的命令(带有所有标志)以及有关运行每个命令的系统的信息。