Xcode5 已經完全棄用了 GCC 並切換到 LLVM,但並不是完全移除 GCC,只是對 GCC 等編譯相關執行檔的位置進行了調整,如果之前使用的是使用 Makefile 方式命令行編譯 iOS APP 的話,Xcode4.6 下編寫的腳本可能會無效,需要對 GCC 的執行檔路徑進行調整。調整內容如下:Xcode4.6 之前:/Applications/Xcode.app/Contents/Developer/Platforms/${PLATFORM}.platform/Developer/usr/bin,Xcode5.0:/Applications/Xcode.app/Contents/Developer/usr/bin。調整後如果出現類似以下錯誤的話,c preprocessor "/lib/cpp" fails sanity check,建議使用 clang++ 並將 - stdlib=g++ 切換為 libc++。如果還是不行,那請切換到 Xcode4.6 下進行編譯,Xcode4.6 下包含 LLVM GCC 4.2。
以下是我用的編譯腳本的部分代碼:
export SDK_VER = "7.0"
export PLATFORM = "iPhoneOS"
export DEV_HOME = "/Applications/Xcode.app/Contents/Developer"
export PLAT_DEV_HOME = "${DEV_HOME}/Platforms/${PLATFORM}.platform/Developer"
export BIN_DIR = "${DEV_HOME}/usr/bin"
7.0 or later?#
if [ "$SDK_VER" == "7.0" ]; then
export BIN_DIR = "${PLAT_DEV_HOME}/usr/bin"
fi
export SDK_ROOT = "${PLAT_DEV_HOME}/SDKs/${PLATFORM}${SDK_VER}.sdk"
export GCC_BIN = "${BIN_DIR}/gcc"
export CFLAGS = ""
export GCC_BASE = " ${GCC_BIN} -Os ${CFLAGS} -Wimplicit \
-isysroot ${SDK_ROOT} \
-F${SDK_ROOT}/System/Library/Frameworks \
-F${SDK_ROOT}/System/Library/PrivateFrameworks "
#armv6,armv7,armv7s,arm64
export GCC = "${GCC_BASE} -arch armv7s"
參考網址:http://www.dotblogs.com.tw/cmd4shell/archive/2013/10/11/123921.aspx