it-swarm.com.de

ld: Bibliothek wurde nicht für den Fehler "-lcrt1.3.1.o" gefunden, während die App im Gerät mit xcode 8.0 mit iOS10 ausgeführt wurde

Nach dem Upgrade von xcode auf 8.0 wurde mein Anwendungsprojekt mit einem Fehler für das Geräteziel erstellt, jedoch erfolgreich für den Simulator.

Fehler ist wie:
ld: Bibliothek für -lcrt1.3.1.o nicht gefunden

Was bedeutet die Lösung für diesen Fehler.

24

Nachdem ich viel Zeit verbracht hatte, bekam ich endlich den Grund für diesen Fehler.

Fehler: ld: Bibliothek wurde für -lcrt1.3.1.o nicht gefunden

Lösung: Wenn für das Projekt ein Ziel von iOS 5.0 festgelegt wurde, ändern Sie es in iOS 6.0 oder höher und Ihr Fehler wird behoben. Nun, das funktioniert auch für das Gerät.

Hurra!!! 

52

crt1.3.1.o Ist eine Bibliothek, die in älteren iOSes (und damit deren SDKs) enthalten war, in neueren SDKs jedoch nicht mehr vorhanden ist. Wenn das Bereitstellungsziel des Projekts jedoch auf ein älteres iOS eingestellt ist (<6.0, wie @Sandy festgestellt hat), versucht Xcode weiterhin, eine Verknüpfung zu diesem Ziel herzustellen.

Um iOS 5.x in neueren Xcodes weiterhin zu unterstützen, muss man nur crt1.3.1.o Von einem älteren Xcode in das entsprechende …/usr/lib/ - Verzeichnis im neueren Xcode kopieren. Xcode verwendet nur crt1.3.1.o, Wenn das Bereitstellungsziel <6.0 ist - für Projekte mit einem Bereitstellungsziel ≥6.0 crt1.3.1.o Bleibt unbenutzt und die resultierende verknüpfte Binärdatei ist identisch mit der vor …/usr/lib/crt1.3.1.o - zusätzlich.

So rufen Sie einen neueren Xcode ab, um ein Projekt ordnungsgemäß mit einem iOS 5.x-Bereitstellungsziel zu verknüpfen:

  1. Laden Sie einen älteren Xcode mit crt1.3.1.o Von https://developer.Apple.com/downloads/ herunter.

    Ich habe Xcode 5.1.1 verwendet, obwohl jeder Xcode, der iOS 5.x unterstützt, funktionieren sollte (was laut Wikipedia Xcode 4.2-6.4 sein sollte).

  2. Öffnen Sie den Xcode .dmg Und suchen Sie auf dem Disk-Image die Datei unter /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS….sdk/usr/lib/crt1.3.1.o.

    Seit ich Xcode 5.1.1 verwendet habe, war meine bei …/iPhoneOS7.1.sdk/usr/lib/crt1.3.1.o.

  3. Kopieren Sie in dasselbe Xcode.app - relative Verzeichnis in Ihrem neueren Xcode: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/crt1.3.1.o.

    Mein neuerer Xcode zum Zeitpunkt des Schreibens ist die neueste Version, Xcode 8.1 (die standardmäßig das iOS 10.1 SDK und die Unterstützung für den herunterladbaren iOS Simulator auf iOS 8.1 enthält).


Beachten Sie, dass Sie diese Schritte nach jedem Xcode-Upgrade erneut ausführen müssen, da der standardmäßige Xcode-Aktualisierungsprozess darin besteht, Xcode.app Und alles, was in dem aktualisierten Xcode.app Enthalten ist, einfach wegzublasen.

Beachten Sie auch, dass ich dies erfolgreich mit Xcode 8.1 getestet habe, um eine App mit einem Bereitstellungsziel von iOS 5.0 zu erstellen, die sowohl auf meinem iOS 10.1.1 iPad Air 2 als auch auf meinem iOS 6.1.3 iPhone 4S ausgeführt werden kann. Ich habe jedoch noch keinen Build mit diesem Verfahren an den iOS App Store gesendet. Es ist zwar unwahrscheinlich, dass Apples Zertifizierung ein Problem mit dieser hat (da es sich um eine eigene iOS crt1.3.1.o - Bibliothek handelt; und da es keine andere Möglichkeit gibt, eine App gegen die neueste zu erstellen Das SDK unterstützt zwar noch iOS bis 5.x, was mit ziemlicher Sicherheit einige Unternehmenskunden immer noch tun. Ich kann hier kein festes Versprechen abgeben.

18

Anstatt die Bibliotheken aus einer älteren Xcode-Installation zu verwenden, können Sie sie auch einfach aus Quellen rekompilieren: https://github.com/mringwal/csu-ios

0
mringwal

entfernen Sie die -lPods- (someCocoaPod) -Zeilen in der Liste "Andere Linker-Flags". ABER nur, wenn sich $ (geerbt) oben befindet. Anfangs war ich unsicher, aber das beruhigende Zeichen war, dass ich immer noch Verweise auf meine Kokosapods sah, als ich den Bearbeitungsmodus (vererbt) verließ. Ich habe in Debug und Release getestet, was beides zu Fehlern führte, und das Problem wurde sofort gelöst

0
Deepak Saki