默認編譯器($PATH
中的默認編譯器)引用了可以爲本地機器編譯的編譯器。您需要一個知道如何創建ARM二進制文件的交叉編譯器。如果你有Xcode中的iOS SDK安裝就可以使用,例如:
PATH_TO_Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc
或
PATH_TO_Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
例如,我的機器上:
ARM_GCC=~/Documents/Xcode4.6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc
IOS_SDK=~/Documents/Xcode4.6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
# Compile
$ARM_GCC -arch armv7 -c test.c -o test.o
# Link
$ARM_GCC -arch armv7 -isysroot "$IOS_SDK" test.o -o test
如果我再運行file test
我得到:
test: Mach-O executable arm
我仍然得到相同的錯誤s告訴我「文件是爲armv7構建的,而不是被鏈接的架構」 – walsh06
當鏈接時,您還需要傳遞'-arch armv7'!並相應地設置「isysroot」。看到我更新的答案。 – DarkDust
好吧,那肯定比以前工作得更好。雖然「ld:library找不到-lcrt1.o」但出現錯誤 – walsh06