device simulator ios10 xcode8

device - ld: no se encontró la biblioteca para el error-lcrt1.3.1.o al ejecutar la aplicación en el dispositivo con xcode 8.0 con iOS10



simulator xcode8 (4)

Después de actualizar xcode a 8.0, mi proyecto de aplicación se compila con un error para el dispositivo objetivo pero se construye correctamente para el simulador.

El error es como
ld: biblioteca no encontrada para -lcrt1.3.1.o

¿Qué hace la solución para este error.


Después de pasar mucho tiempo, finalmente obtuve la razón de este error.

Error: ld: biblioteca no encontrada para -lcrt1.3.1.o

Solución: si el origen de su proyecto tiene un destino de implementación de iOS 5.0, cámbielo a iOS 6.0 o posterior y se solucionará el error. Ahora que funciona bien para el dispositivo también.

¡¡¡Hurra!!!



elimine las líneas -lPods- (someCocoaPod) en la lista ''Otros indicadores de vinculador'', PERO solo si $ (heredado) está en la parte superior. Al principio no estaba seguro, pero el signo tranquilizador era que todavía veía referencias a mis códodos de coco cuando salí del modo de edición (heredado). Probé en depuración y lanzamiento, los cuales me estaban dando errores y el problema se resolvió de inmediato


crt1.3.1.o es una biblioteca que se incluyó en iOS más antiguos (y, por lo tanto, en sus SDK), pero ya no está presente en los nuevos SDK. Sin embargo, cuando el objetivo de implementación del proyecto se establece en un iOS más antiguo (<6.0, como @Sandy ha encontrado), Xcode aún intenta enlazarlo.

Para seguir admitiendo iOS 5.x en Xcodes más nuevos, solo se necesita copiar crt1.3.1.o de un Xcode anterior al apropiado …/usr/lib/ dir en el Xcode más nuevo. Xcode solo usará crt1.3.1.o si el Destino de implementación es <6.0: para proyectos con un Destino de implementación ≥6.0 crt1.3.1.o permanece sin uso y el binario vinculado resultante es idéntico a lo que era anterior a …/usr/lib/crt1.3.1.o -adición.

Para obtener un Xcode más nuevo para vincular correctamente un proyecto con un Destino de implementación de iOS 5.x:

  1. Descargue un Xcode antiguo que aún tenga crt1.3.1.o desde https://developer.apple.com/downloads/ .

    Utilicé Xcode 5.1.1, aunque cualquier Xcode que tenga soporte para iOS 5.x debería funcionar (que, según Wikipedia, debería ser Xcode 4.2-6.4).

  2. Abra Xcode .dmg y en la imagen del disco, ubique el archivo en /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS….sdk/usr/lib/crt1.3.1.o .

    Desde que utilicé Xcode 5.1.1, el mío estaba en …/iPhoneOS7.1.sdk/usr/lib/crt1.3.1.o

  3. Copie al mismo directorio Xcode.app en su Xcode más reciente: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/crt1.3.1.o .

    Mi código más nuevo al momento de escribir es el último lanzamiento, Xcode 8.1 (que de fábrica incluye el iOS 10.1 SDK y el simulador de iOS descargable para iOS 8.1).

Tenga en cuenta que deberá volver a realizar estos pasos después de cada actualización de Xcode, ya que el proceso de actualización estándar de Xcode es simplemente eliminar Xcode.app y todo lo que contiene el Xcode.app actualizado.

También tenga en cuenta que lo he probado con éxito utilizando Xcode 8.1 para producir una aplicación con un objetivo de implementación de iOS 5.0 que se ejecutará tanto en mi iOS 10.1.1 iPad Air 2 como en mi iOS 6.1.3 iPhone 4S. Sin embargo, no he enviado una compilación mediante este proceso a la tienda de aplicaciones de iOS. Si bien es poco probable que la certificación de Apple tenga un problema con esto (ya que es después de toda su propia biblioteca crt1.3.1.o iOS; y ya que no hay otra forma de crear una aplicación contra el último SDK mientras se admite iOS de nuevo a 5 .x, que es casi seguro que algunos clientes empresariales todavía están haciendo) , no puedo hacer una promesa firme aquí.