C 链接时跳过不兼容错误

C 链接时跳过不兼容错误,c,compiler-errors,intel,C,Compiler Errors,Intel,我使用“英特尔C编译器”在64位体系结构上编译。同样的代码在不同的64位intel体系结构上构建得很好 现在,当我尝试构建二进制文件时,会收到一条消息“跳过不兼容的.././libtime.a”或类似的消息,这表明我存档(从我编译的某些对象文件中)的libtime.a不兼容。我在谷歌上搜索到,这似乎通常是32->64位转换或类似的结果,但英特尔C编译器在编译时似乎不支持-64或其他内存选项。如何排除故障并修复此错误?不能混合使用64位和32位编译代码。Linux的配置说明。您需要确定库的目标处理

我使用“英特尔C编译器”在64位体系结构上编译。同样的代码在不同的64位intel体系结构上构建得很好


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

不能混合使用64位和32位编译代码。Linux的配置说明。

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

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

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

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


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

+1事实上,Derek似乎正在尝试将32位库与64位库链接起来。原来系统是IA-64,不知怎的,有人在上面安装了32位编译器。这对我来说并不明显,直到我在创建的对象文件上创建了一个“文件”。感谢您的提示,这一次不是问题所在,但我会记得objdump命令可能与