我已经安装了 xcode 5 并注意到 gcc 编译器已被弃用。假设我不想切换到 Apple LLVM 5.0,我的问题来了:
是否可以使用 iOS7 SDK 并仍然在 llvm-gcc-4.2 中编译?
如果是,该怎么做?
如果您不知道这是否可能,请不要发布诸如“use clang, man”之类的答案,因为他们实际上并没有回答我发布的问题。
Apple 已在 XCode 5 中删除了对 llvm-gcc-4.2 的支持。即使您安装基础 sdk 并将其更改为 6.1 sdk,您也无法使用 llvm-gcc-4.2 进行构建。因此,如果您想使用 llvm-gcc-4.2,您唯一的选择是继续使用 XCode 4.x。
Xcode 5 中不包含 LLVM-GCC。
所以问题是用什么来代替 llvm-gcc ?
是否可以使用 iOS7 SDK 并仍然在 llvm-gcc-4.2 中编译?
如果您想使用 llvm-gcc-4.2编译整个应用程序:可能不会。我自己没有检查过这个,但是 iOS 7 头文件只需要添加一个对 llvm-gcc-4.2 中缺少的 clang 功能的单一依赖,你就会陷入编译错误。您也许可以破解它们,但吸收它并升级到 clang 可能会更容易(更不用说更面向未来了)。
如果您只需要使用 llvm-gcc-4.2 编译您的一些应用程序:当然,只要您不需要在使用 llvm-gcc-4.2 构建的部分中导入任何 iOS 7 标头。
您可以尝试将有问题的部分移至静态库,使用 gcc 编译,然后链接到使用 clang 构建的最终应用程序。您将无法以 64 位为目标,因为 llvm-gcc-4.2 不能生成 armv8 代码,但它应该可以正常工作。
一个警告:如果您的静态库使用 C++,由于 ABI 和 std 库的差异,可能会出现一些问题。但至少这些都是可以解决的问题。
你可以使用homebrew来安装你需要的 gcc 版本。很可能您的所有 Makefile 都需要更正(叹气)
我做了:
brew search gcc
结果:
homebrew/versions/gcc43
homebrew/versions/gcc45
homebrew/versions/gcc47
homebrew/versions/gcc49
homebrew/versions/gcc44
homebrew/versions/gcc45
homebrew/versions/gcc48
homebrew/versions/llvm-gcc28
homebrew/dupes/apple-gcc42