Nel tentativo di compilare un programma fittizio per iPhoneOS, Xcode4, gcc non sembra andare oltre la directory iniziale sysrootin /usr/lib/system/libcache.dylib, manca l'architettura richiesta 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
Se Lascio fuori 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
I seguenti lavori, ma sembra molto scadente e non scalabile. Cosa sta succedendo qui?
$ gcc -arch armv6 -L$ISYSROOT/usr/lib/system --sysroot=$ISYSROOT test.cpp
Aggiornamento . A quanto pare questo è un problema noto, anche se non è ancora chiaro come passare sysroot a gcc ma isysroot del D.
http://www.doitscared.com/?m=201104
Quando si compila la libreria, se si vede questo errore “ld: non depositare trovato: /usr/lib/system/libcache.dylib per architettura armv7 ", quindi il tuo comando di collegamento utilizza" -sysroot "che non funziona in Xcode 4. Invece, cambia il comando linker per usare" -isysroot ”. (Nota: Questo si applica solo al comando del linker I comandi di compilazione devono continuare ad utilizzare “-sysroot” Vedi qui per maggiori dettagli...)
grazie! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp mi ha aiutato! –