En un intento de compilar un programa ficticia para iPhoneOS, Xcode4, gcc no parece ir más allá del directorio inicial sysrooten /usr/lib/system/libcache.dylib, falta la arquitectura requerida 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
Si Dejo afuera 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
Lo siguiente funciona, pero se siente muy cursi y no es escalable. ¿Que está pasando aqui?
$ gcc -arch armv6 -L$ISYSROOT/usr/lib/system --sysroot=$ISYSROOT test.cpp
Actualización. Al parecer, este es un problema conocido, aunque todavía no está claro cómo pasar sysroot a gcc, pero isysroot a la LD
http://www.doitscared.com/?m=201104
Al compilar la biblioteca, si usted ve este error “ld: no presentar encontrado: /usr/lib/system/libcache.dylib para la arquitectura armv7 ", entonces el comando del enlazador está usando" -sysroot "que no funciona en Xcode 4. En su lugar, cambie el comando del enlazador para usar" -isysroot ". (Nota: Esto sólo se aplica a comando de enlace Los mandatos de compilación deben continuar utilizar “-sysroot” Vea aquí para más detalles...)
gracias! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp me ayudó! –