在尝试编译iphoneos,Xcode4的虚拟程序时,gcc似乎没有超出最初的sysroot目录
$ echo $ISYSROOT
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
$ gcc -arch armv6 --sysroot=$ISYSROOT test.cpp
ld: in /usr/lib/system/libcache.dylib, missing required architecture armv6 in file for architecture armv6
collect2: ld returned 1 exit status
如果我遗漏了sysroot,
$ gcc -arch armv6 test.cpp
ld: warning: ignoring file /usr/lib/crt1.o, missing required architecture armv6 in file
ld: warning: ignoring file /usr/lib/libgcc_s.1.dylib, missing required architecture armv6 in file
ld: warning: ignoring file /usr/lib/libSystem.dylib, missing required architecture armv6 in file
Undefined symbols for architecture armv6:
"start", referenced from:
-u command line option
ld: symbol(s) not found for architecture armv6
collect2: ld returned 1 exit status
以下作品,但感觉非常俗气,而且不具备可扩展性。这是怎么回事?
$ gcc -arch armv6 -L$ISYSROOT/usr/lib/system --sysroot=$ISYSROOT test.cpp
更新。显然这是一个已知问题,但仍不清楚如何将sysroot传递给gcc但isysroot传递给ld
http://www.doitscared.com/?m=201104
编译库时,如果看到此错误“ld:找不到文件: /usr/lib/system/libcache.dylib for architecture armv7“,然后你的 链接器命令使用“-sysroot”,它在Xcode 4中不起作用。 而是将链接器命令更改为使用“-isysroot”。 (注意:这个 仅适用于链接器命令。编译命令必须继续 使用“-sysroot”。有关详细信息,请参见此处。)
答案 0 :(得分:0)
将项目的部署目标更改为至少4.3,它将起作用。这是XCode 4的问题,但实际上不需要将应用程序部署到4.3之前的iOS版本。 iOS用户倾向于与iOS版本保持同步。