Próbując skompilować program obojętne iPhoneOS, Xcode4, gcc nie wydaje się wykraczać poza początkowym katalogu sysrootw /usr/lib/system/libcache.dylib, brakuje wymaganego architekturę 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
Jeśli Pomijam 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
Następujące utwory, ale są bardzo tandetne i nie są skalowalne. Co tu się dzieje?
$ gcc -arch armv6 -L$ISYSROOT/usr/lib/system --sysroot=$ISYSROOT test.cpp
Aktualizacja. Najwyraźniej jest to znany problem, choć nadal nie jest jasne, w jaki sposób przekazać sysroot do gcc ale isysroot do LD
http://www.doitscared.com/?m=201104
Podczas kompilowania biblioteki, jeśli widzisz błąd ten „ld: nie złożyć Znaleziono: /usr/lib/system/libcache.dylib dla architektury armv7 ", wtedy twoje polecenie linkera używa" -sysroot ", które nie działa w Xcode 4. Zamiast tego, zmień polecenie linkera na" -isysroot " ". (Uwaga: Ten odnosi się tylko do polecenia łącznikowym Komendy kompilacji polecenia muszą kontynuować używać „-sysroot” Zobacz tutaj po więcej szczegółów...)
dziękuję! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp mi pomógł! –