2012-03-27 7 views
10

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...)

+0

dziękuję! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp mi pomógł! –

Odpowiedz

0

Zmiana docelowa Wdrożenie projektu musi wynosić co najmniej 4.3 i to zadziała. To jest problem z XCode 4, ale naprawdę nie ma potrzeby wdrażania aplikacji na wersje iOS wcześniejsze niż 4.3. Użytkownicy systemu iOS zwykle są dość aktualni w swoich wersjach na iOS.

+0

Utknąłem w 4.2.1 na starym urządzeniu z iOS, które nie może uaktualnić przeszłości - chciałem tylko skompilować dla niego ncurses. Dzięki za nic. – Wyatt8740

Powiązane problemy