2

调查/usr/llvm-gcc-4.2/bin我有

544416 Oct 31 17:10 i686-apple-darwin11-llvm-g++-4.2*
544416 Oct 31 17:10 i686-apple-darwin11-llvm-gcc-4.2*
117168 Oct 31 17:10 llvm-c++-4.2*
257552 Oct 31 17:10 llvm-cpp-4.2*
117168 Oct 31 17:10 llvm-g++-4.2*
117168 Oct 31 17:10 llvm-gcc-4.2*

有人可以解释这些编译器之间的区别吗?

i686-apple-darwin11-llvm-gcc-4.2我用两者和 编译相同的应用程序(ac hello-world)llvm-gcc-4.2:它们都可以工作,但差异报告差异。

有人可以解释这些可执行文件之间有什么区别吗?

4

1 回答 1

2

llvm-gcc-4.2 是默认前端,具有平台相关选项。如果 llvm 已在目标支持下构建并找到,它可以指定体系结构和机器以调用特定目标的编译器。对于/usr目录,它用于系统范围(Intel x86)平台,因此它i686-apple-darwin11仅包含(i386 和 x86_64)平台。所以如果你显式调用i686-apple-darwin11-llvm-gcc,它就可以支持 x86, x86_64 目标。

如果您安装了 Xcode 和 iOS 开发环境,您应该可以找到更多文件,如下所示。

$ ls -l
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin
total 2336
-rwxr-xr-x  1 root  wheel  555056 Sep  8 16:49 arm-apple-darwin10-llvm-g++-4.2
-rwxr-xr-x  1 root  wheel  546832 Sep  8 16:49 arm-apple-darwin10-llvm-gcc-4.2
-rwxr-xr-x  1 root  wheel  130784 Sep  8 16:49 gcov-4.2
-rwxr-xr-x  1 root  wheel  550960 Sep  8 16:49 i686-apple-darwin10-llvm-g++-4.2
-rwxr-xr-x  1 root  wheel  542752 Sep  8 16:49 i686-apple-darwin10-llvm-gcc-4.2
-rwxr-xr-x  1 root  wheel  106064 Sep  8 16:49 llvm-c++-4.2
-rwxr-xr-x  1 root  wheel  255696 Sep  8 16:49 llvm-cpp-4.2
-rwxr-xr-x  1 root  wheel  106064 Sep  8 16:49 llvm-g++-4.2
-rwxr-xr-x  1 root  wheel  106064 Sep  8 16:49 llvm-gcc-4.2

llvm-gcc和有两个arm-apple-darwin10目标i686-apple-darwin10。主机仍然是 i686 Mac OS X,因此llvm-gcc-4.2主机编译器也使用默认 i686。arm-apple-darwin10-llvm-gcc-4.2是一个交叉编译器,可以在 Intel Mac OS X 平台上运行,生成 ARM 指令代码。

于 2012-11-07T09:05:51.690 回答