如何确定在 Mac OS Lion 上编译对象文件/模块"target"(例如 "x86_64-apple-darwin11.0" )?



我正试图为OS X Lion编译一些代码,我在链接目标文件和库时遇到了问题。我得到这个错误:

警告:连接两个不同目标三元组的模块:'x86_64-apple-darwin11.0'和'x86_64-apple-darwin10'

是否有一个命令行工具/命令,我可以运行,看看目标文件或库的目标是什么?然后我可以回去调试编译过程,以确保每个人都针对相同的构建。

谢谢!——请

对于llvm位码模块,您可以使用llvm-dis来反汇编它们,并查看那里的模块:

[yendi:~] echristo% llvm-dis foo.bc -o - | grep "target triple"
target triple = "x86_64-apple-macosx10.7.0"

不是完整的信息,但通常要获取架构,您需要使用'file':

对于单个。o文件:

[yendi:~] echristo% file foo.o
foo.o: Mach-O 64-bit object x86_64

或者使用-O4:

创建位码文件
[yendi:~] echristo% /Volumes/Data/builds/build-llvm/Debug+Asserts/bin/clang++ foo.cc -c -emit-llvm -o foo.bc -O4
[yendi:~] echristo% file foo.bc
foo.bc: LLVM bit-code object x86_64

不能得到完整的三元组,但是可以得到文件信息。

我的猜测是您有一些旧的目标文件,或者在某些文件上设置了-mmacosx-version-min=10.6,而在其他文件上没有。

相关内容