【问题标题】:Difference between i686-apple-darwin11-llvm-gcc-4.2 and llvm-gcc-4.2i686-apple-darwin11-llvm-gcc-4.2 和 llvm-gcc-4.2 的区别
【发布时间】:2012-11-07 01:40:59
【问题描述】:
调查/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 和llvm-gcc-4.2 编译了同一个应用程序(一个c hello-world):它们都可以工作,但是差异报告了差异。
有人能解释一下这些可执行文件有什么区别吗?
【问题讨论】:
标签:
macos
compiler-construction
llvm-gcc
【解决方案1】:
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 有两个目标。 HOST 仍然是 i686 Mac OS X,所以 llvm-gcc-4.2 也使用默认 i686 作为主机编译器。 arm-apple-darwin10-llvm-gcc-4.2是一个交叉编译器,可以在Intel Mac OS X平台上运行,生成ARM指令代码。