2012-03-27 13 views
10

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

+0

gracias! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp me ayudó! –

Respuesta

0

Cambiar el destino de despliegue de su proyecto para ser al menos 4.3 y funcionará Este es un problema con XCode 4, pero realmente no es necesario implementar aplicaciones en las versiones de iOS anteriores a 4.3. Los usuarios de iOS tienden a mantenerse bastante actualizados con sus versiones de iOS.

+0

Estoy atascado en 4.2.1 con un dispositivo iOS antiguo que no puede actualizar más allá de ese punto; solo quería compilar ncurses para él. Gracias por nada. – Wyatt8740

Cuestiones relacionadas