ios - pagina - que es una etiqueta en html
SÃmbolos indefinidos para arquitectura arm64 (30)
- Ir a la configuración de compilación de destino.
- establecer BUILD ACTIVE ARCHITECTURE ONLY = NO para Debug and Release
- Construir y correr
Recibo un Apple Mach-O Linker Error cada vez que importo un archivo de CocoaPods.
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64
Obtengo aproximadamente 12 de estos, para los distintos Pods que uso.
Estoy intentando construir para el iPhone 5S usando XCode 5.
He estado probando varias soluciones aquí en SO, pero aún no tengo ninguna de ellas para trabajar.
¿Cómo soluciono este error Apple Mach-O Linker?
Acabo de encontrar otra advertencia que podría ser interesante, espero que esto me lleve a la solución:
Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a,
file was built for archive which is not the architecture being linked
(arm64):~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a
Agregar "Security.framework" me fue el truco.
Como respuesta morisunshine apuntó en la dirección correcta, un pequeño ajuste en su respuesta resolvió mi problema para iOS8.2. Gracias a él.
Resolví este problema estableciendo eso:
ARCHS = armv7
VALID_ARCHS = armv6 armv7 armv7s arm64
BUILD ACTIVE ARCHITECTURE ONLY= NO
Dado un iPhone 5s y aún no había recibido una versión de 64 bits de una biblioteca de terceros, tuve que volver al modo de 32 bits con el último Xcode (antes de 5.1 no me quejé).
Lo solucioné eliminando el brazo64 de la lista de Arquitecturas válidas y luego estableciendo Construir arquitectura activa solo en NO. Me parece que esto tiene más sentido que a la inversa, como se muestra arriba. Estoy publicando en caso de que otras personas no puedan obtener ninguna de las soluciones anteriores para trabajar para ellos.
El problema es que los cocoapods no se han construido para la arquitectura arm64, por lo que no se pueden vincular cuando los construyes. Es probable que no pueda usar esos paquetes hasta que se actualicen y utilicen esa arquitectura. Puede corregir el error del vinculador yendo a project -> target (su nombre de proyecto) -> configuración de compilación y cambiar arquitecturas a arquitecturas estándar (armv7, armv7s) y arquitecturas válidas a armv7, armv7s.
Sin embargo, tenga en cuenta que esto significa que no obtendrá toda la potencia del procesador de 64 bits. Dijiste que estás construyendo para los 5, por lo que puede haber alguna razón por la que necesites esto. Si por algún motivo necesitas ese poder (quizás estás construyendo un juego) y necesitas desesperadamente esos archivos, puedes enviar una solicitud de extracción y luego recompilar el proyecto para armar64 configurando esos mismos campos para armar 64 en los archivos que extraes de los proyectos de fuente abierta. Pero, a menos que realmente necesite que estos archivos sean compatibles con 64 bits, por ahora parece una exageración.
EDITAR: Algunas personas también informaron que establecer Build for Active Architectures en YES también era necesario para resolver este problema.
A partir de 2014-04-28, la configuración debería verse más o menos así:
En mi caso, tuve que buscar
C++ Standard Library
y asegúrese de que libc++
sido seleccionado.
Esta solución es lo único que funcionó para mí: vaya a la configuración de CordovaLib y agregue arm64 a Valid Architectures.
Estableciendo -ObjC
en Other Linker Flags
en la configuración de construcción del objetivo resuelto el problema.
Establezca Architectures en armv7 armv7s , Build Active Architecture Only en NO , para cada objetivo del proyecto, incluidos todos los Pods
Este problema ocurrió después de instalar un pod a través de Podfile e pod install
. Después de probar un montón de soluciones diferentes, finalmente importé el Pod manualmente (arrastrando los archivos necesarios a mi proyecto) y eso resolvió el problema.
Esto funcionó para mí:
ios sdk 9.3
en su configuración de compilación de la arquitectura válida de app.xcodeproj : armv7 armv7s Build Arquitectura activa: No
Limpiar y construir, funcionó para mí.
Esto podría estar relacionado con libz.dylib
o libz.tbd
, solo tiene que agregarlo a sus objetivos para los binarios de enlace e intentar compilar de nuevo.
Había estado atascado en este tema todo el día.
Tenía varios Schemes, estaba compilando bien para Demo, Internal, Release, sin embargo, el esquema Debug no compilaba y se quejaba de la falta de libPods.a.
La solución fue ir al Proyecto -> Destino -> Configuración de compilación y cambiar "Crear arquitectura activa solamente" a SÍ. Limpiar y construir! Finalmente, ¡horas de picazón en la cabeza resueltas!
Lo resolví estableciendo archios válidos para armv7 armv7s y estableciendo arquitecturas de compilación activa solo en SÍ en el lanzamiento y luego haciendo una nueva "instalación de pod" desde la línea de comando
Lo siguiente funcionó para obtener la compilación de GPUImage sin errores en Xcode 5.1 para el simulador de 64 bits y retina iPad Mini, sin necesidad de eliminar arm64 de la lista de Arquitecturas válidas (lo que frustra el propósito de tener un dispositivo de 64 bits para probar Rendimiento de 64 bits).
Descargue la carpeta .zip de la página de GitHub: https://github.com/BradLarson/GPUImage
Descomprime, y navega a la carpeta ''framework''. Desde aquí, agregue y copie la carpeta ''Fuente'' en su proyecto de Xcode. Asegúrese de que ''Copiar elementos en la carpeta del grupo de destino'' esté marcado, y que ''Crear grupos para cualquier carpeta agregada'' también esté marcado. Esto copiará los archivos genéricos, de encabezado / implementación de iOS y Mac en su proyecto.
Si no necesita los archivos Mac porque está compilando para iOS, puede eliminar la carpeta Mac antes de copiar los archivos en su proyecto, o simplemente eliminar el grupo desde Xcode.
Una vez que haya agregado la carpeta de origen a su proyecto, solo use lo siguiente para comenzar a usar las clases / métodos de GPUImage:
#import "Source/GPUImage.h"
Algunas cosas para señalar:
- Si recibe un mensaje de error que dice ''Cocoa'' no encontrado, ha agregado la carpeta / los encabezados de Mac en su proyecto de iOS; simplemente elimine el grupo / archivos Mac de su proyecto y la advertencia desaparecerá.
- Si cambia el nombre de la carpeta de origen (no el grupo en Xcode), use ese nombre en lugar de "Source / GPUImage.h" en la instrucción #import. Por lo tanto, si cambia el nombre de la carpeta a GPUImageFiles antes de agregarla a su proyecto, use: #import "GPUImageFiles / GPUImage.h
- Obviamente, asegúrese de que arm64 esté seleccionado en la lista de Arquitecturas válidas para aprovechar el procesador A7 de 64 bits.
- Este no es un paquete de GPUImage.framework (como si descargó el marco de http://www.raywenderlich.com/60968/ios-7-blur-effects-gpuimage ) por lo que puede que no sea la forma correcta de usar GPUImage que pretendía Brad Larson, pero funciona para mi proyecto SpriteKit actual.
- No es necesario vincular marcos / bibliotecas, etc., solo importe el encabezado y la carpeta fuente de implementación como se describe arriba.
Espero que lo anterior ayude, parece que no hubo instrucciones claras en ninguna parte a pesar de que la pregunta se hizo muchas veces, pero no temas, ¡GPUImage definitivamente funciona para la arquitectura arm64!
Me encontré con el mismo problema / similar que implementa AVPictureInPictureController
y el problema era que no estaba vinculando el marco AVKit en mi proyecto.
El mensaje de error fue:
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_AVPictureInPictureController", referenced from:
objc-class-ref in yourTarget.a(yourObject.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
La solución:
- Ve a tu proyecto
- Seleccione su objetivo
- Luego, ve a Build Fhases
- Open Link Binary con bibliotecas
- Finalmente, solo agregue + el marco AVKit / cualquier otro marco .
Espero que esto ayude a alguien más a encontrarse con un problema similar que tuve.
Me enfrento al mismo problema después de instalar el marco de AWS para solucionar este problema. He actualizado el archivo de configuración de POD de su proyecto que se creó después de instalar AWS POD. Compruebe el archivo de configuración como se muestra a continuación
OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-AWSAutoScaling" -l"
Pods- AWSCloudWatch" -l"Pods-AWSCognito" -l"Pods-AWSCore" -l
"Pods-AWSDynamoDB" -l"Pods-AWSEC2" -l"Pods-AWSElasticLoadBalancing"
-l"Pods-AWSKinesis" -l"Pods-AWSLambda" -l"Pods-AWSMachineLearning"
-l"Pods-AWSS3" -l"Pods-AWSSES" -l"Pods-AWSSNS" -l"
Pods-AWSSQS"-l "Pods-AWSSimpleDB" -l"Pods-Bolts" -l"Pods-FMDB"
-l"Pods-GZIP" -l"Pods-Mantle" -l"Pods-Reachability" -l"Pods-TMCache"
-l"Pods-UICKeyChainStore" -l"Pods-XMLDictionary" -l"sqlite3" -l
"z"-framework "Accelerate" -framework "AssetsLibrary"
-framework "CoreLocation" -framework "Foundation" -framework
"ImageIO" -framework "Security" -framework "SystemConfiguration"
-framework "UIKit" -weak_framework "UIKit"
OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)
si su archivo de configuración no funciona correctamente, configure el indicador Otro enlazador en $ (heredado)
Ninguna de las soluciones corrige este error en mi caso (Xcode 9), con TesseractOCRiOS
. Después de horas de prueba y error, se me ocurrió una buena solución. Solo eliminé ''pod ''TesseractOCRiOS'', ''~> 4.0.0''
en el Podfile
, ejecute la pod install
. Y luego, agregue el pod ''TesseractOCRiOS'', ''~> 4.0.0''
vuelta a Podfile
y ejecute la pod install
nuevamente.
¡Explosión! ¡Funciona!
Para mí, uso opencv 2.4.9 en xcode 7.2 para iOS y ocurrieron los errores anteriores, y resuelvo los errores utilizando opencv a través de la instalación del pod en lugar del marco opencv sin conexión.
Puede probar añadiendo el texto del pod de opencv a continuación y eliminar el marco de trabajo opencv sin conexión, si lo ha utilizado.
pod ''OpenCV'', ''2.4.9''
Resolví este problema estableciendo eso:
ARCHS = armv7 armv7s
VALID_ARCHS = armv6 armv7 armv7s arm64
Resuelto después de eliminar el contenido de DerivedData -> Build -> Products -> Debug-iphoneos
Sé que esta es una vieja rama. Sin embargo, el mismo problema comenzó a sucederme después de migrar a la última versión de CocoaPods (1.0.0) e intentar reinstalar todos los pods. Encontré el error del enlazador "Missing symbols for armv64". Por extraño que parezca, lo resolví realizando los siguientes pasos:
Eliminar todos los pods (pod init, pod)
Vuelva a escribir el archivo de archivo en un orden inverso (en lugar de: pod "Mixpanel", pod "Intercom", he utilizado: pod "Intercom", pod "Mixpanel")
Pod instalar
Invertir el orden de las dependencias en el archivo de pod y reconstruir los pods ha resuelto el problema.
Si la configuración de la arquitectura y el enlazador se ven bien, verifique sus archivos h. Mi problema era el mismo error, pero había reestructurado los archivos h y eliminé una declaración externa. Otros m archivos estaban usando esa variable, causando el error del enlazador.
Si sus Arquitecturas y Arquitecturas válidas son correctas, puede verificar si ha agregado $(inherited)
, que agregará marcadores de enlazador generados en grupos, a otros indicadores de enlazado como se muestra a continuación:
Solo necesita eliminar arm64 de Valid Architecture y establecer NO en Active Architecture Only . Ahora solo limpia, compila y ejecuta. No volverás a ver este error.
:) KP
Tuve el mismo problema después de actualizar a Xcode 5.1 y lo solucioné configurando Architectures en armv7 armv7s
alguna explicación de por qué build_active_architecture está establecido en NO. Xcode ahora detecta qué dispositivos ha conectado y configurará la arquitectura activa en consecuencia. Entonces, si conecta un iPod Touch de segunda generación a su computadora, Xcode debe configurar la arquitectura activa en armv6. Construir su objetivo con la configuración de Depuración anterior ahora solo creará el binario de armv6 para ahorrar tiempo (a menos que tenga un gran proyecto, puede que no note la diferencia, pero creo que los segundos se suman con el tiempo).
Cuando crea una configuración de distribución para publicar en la tienda de aplicaciones, debe asegurarse de que esta opción no esté configurada para que cree el binario universal grueso http://useyourloaf.com/blog/2010/04/21/xcode-build-active-architecture-only.html