2012-09-22 6 views
9

Recientemente acabo de actualizar al nuevo XCode. Después de actualizar, algunas de mis aplicaciones no se compilarán. Me sale este error:CommonCrypto no está compilando para arch armv7 iOS

ld: cannot link directly with /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system/libcommonCrypto.dylib. Link against the umbrella framework 'System.framework' instead. for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

He intentado todo - la limpieza, volver a importar, el cambio de arquitecturas ...

Por favor, ayuda

+4

Vaya a los pasos de creación de su destino, en "enlace con bibliotecas" más o menos, elimine libcommonCrypto.dylib. –

+0

Tenga en cuenta que al hacer lo que dijo, no lo mueva a la basura. Si lo hace, obtendrá "ld: in '/usr/lib/system/libcommonCrypto.dylib', falta la arquitectura requerida de armv7 en el archivo /usr/lib/system/libcommonCrypto.dylib (2 sectores) para la arquitectura de armv7". Solo vuelve a ponerlo en tu basura. – Jochem

+0

@tc. ¿Por qué eliminar libCommonCrypto.dylib? – onmyway133

Respuesta

3

simplemente he resuelto de la siguiente manera:

Resulta que el error libcommonCrypto.dylib fue una pista falsa.

Después de eliminar libcommonCrypto.dylib como se sugirió anteriormente, obtuve 9 nuevos errores. A primera vista, supuse que eran errores de Crypto, pero de hecho no lo eran; para mí, en realidad se remonta a zLib que no se incluyó, que fue "importado" en una parte más profunda de la implementación general (de la cual crypto es una parte).

Para mí específicamente, se remonta a ASIDataDecompressor.h, import < zlib.h>

me fijo incluyendo el marco libz.dylib faltante; finalmente, no tuve que incluir explícitamente libcommonCrypto.dylib.

Por lo tanto, asegúrese de verificar los errores detenidamente después de alternar libcommonCrypto, y asegúrese de que no faltan algunas bibliotecas OTHER.

16

Resolví este problema de una manera diferente después de probar ambas cosas de arriba donde ninguna me funcionó.

El problema fue que cuando estaba añadiendo la biblioteca desde la interfaz principal (-configuración de generación principales ... etc) que estaba buscando inicialmente para crypto y luego dos librerías regresa libcorecrypto.dylib y liblibcommonCrypto.dylib, si se nota, tanto existe en color gris a diferencia de las libs de color amarillo que normalmente agrega. Agregar estas causas hace que el compilador reporte (algunas otras librerías faltan, como la libz, u otra lib que se necesitará más funciones que realice.

Si observa que las dos libs anteriores normalmente se ubicarían en JavaScriptCore.framework biblioteca (que es el amarillo), por lo tanto, mediante la eliminación de los dos anteriores y añadiendo JavaScriptCore.framework en cambio, el problema se resolvió, y build successful mostró

también mencionar que en base a los grises-libs existentes como un haz dentro de JavaScriptCore.framework, el libcrypto y el otro no existirán en el /Library/.../system/path como se mencionó anteriormente, es decir, no los eliminó de su sistema, simplemente no están allí.

Una vez más, la solución es:

* De sus principales parámetros del proyecto XCODE, no añada: * dd

libcorecrypto.dylib 
liblibcommonCrypto.dylib 

lugar, agregue:

JavaScriptCore.framework 

en su.m (código), simplemente abastecerse normalmente haciendo:

#include <CommonCrypto/CommonDigest.h> (or any of your other libs as needed in code)... 

que debería funcionar bien.

Espero que esto ayude.

Saludos cordiales

+0

Gracias, hombre ... funcionó. + 1 – abhi1992

+0

#import - no #include – ETech

0

estoy usando cocoapods para la gestión de la biblioteca. Una de las bibliotecas (puede realizar una búsqueda simple en su espacio de trabajo) contenía una referencia a CommonCrypto.framework, que era roja en la lista de marcos en su configuración de proyecto.

En mi caso, tuve que eliminar la dependencia de CommonCrypto.framework, pero esta solución solo dura otra actualización de tus pods.

Btw Me gustaría conocer un comando para listar el gráfico de las dependencias entre las bibliotecas en el archivo Podfile.

0

que tenían el mismo error,

ld: in '/usr/lib/system/libcommonCrypto.dylib', missing required architecture arm64 in file /usr/lib/system/libcommonCrypto.dylib (2 slices) for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

He resuelto este problema mediante la comprobación de mi $ PATH. Faltaba el archivo.

Usando find/-type f -name libcommonCrypto.dylib

Comparando mis improvisaciones con mis sistemas amigos mac, muestra que este archivo no estaba presente en mi equipo:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/libcommonCrypto.dylib

Xcode usando $ PATH repliegue en /usr/lib/system/libcommonCrypto.dylib pero no es el bien construido (i386 en lugar de cosas de brazo).

Copié la versión de mi amigo, me mudé al /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/ y luego pude volver a construir mis proyectos.

Aquí hay un problema vicioso porque hay mucho mismo archivo para esta lib dependiendo de su arquitectura y la mayoría de ellos no están destinados para ser utilizados para compilaciones ios. Pero el $ env env var recurrirá a/usr/lib cuando no se encuentren archivos en directorios dedicados.

Falló Xcode en /usr/lib/system/libcommonCrypto.dylib pero esta definitivamente no es la lib correcta porque no está hecha para ios, sino para mi mac.

0

Better Solution, como se dice eliminar libcommonCrypto.dylib, y reemplazar añadiendo SystemConfiguration.framework.It trabajó para mí, podría ser útil para someone.I era conseguir Enlazador de error diciendo gettingLink contra el marco paraguas 'System.framework' en su lugar.

Cuestiones relacionadas