在試圖編譯的iPhoneOS的虛擬程序,Xcode4,GCC不會出現超越最初SYSROOT目錄在/usr/lib/system/libcache.dylib,缺少必需架構的ARMv6
$ 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爲架構armv7「,那麼您的 鏈接器命令使用」-sysroot「,它在Xcode 4中不起作用。 而是將鏈接器命令更改爲使用」-isysroot 」。 (注:此 僅適用於連接器的命令的編譯命令時必須繼續 使用「-sysroot」在這裏看到更多的細節。)
謝謝! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp對我有幫助! – 2012-11-13 09:00:10