我试图使用命令行将mach-o arm目标文件编译为mach-o arm可执行文件。我使用过各种各样的命令
clang -arch armv7 helloapp.o -o helloapp
clang helloapp.o -o helloapp
gcc helloapp.o -o helloapp
他们都会返回不同的错误,说错误的架构编译或缺少必要的文件。我需要正确编译它的命令是什么?
答案 0 :(得分:0)
默认编译器($PATH
中的编译器)引用可以为本地计算机编译的编译器。您需要一个知道如何创建ARM二进制文件的交叉编译器。如果你已经安装了iOS SDK的Xcode,你可以使用例如:
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