XCode5-Simulator: unbekanntes Optionszeichen 'X' in: -Xlinker

8

Ich bin momentan von einem Linker-Fehler blockiert, der NUR auf XCode5 (XCode4 kompiliert) und NUR auf dem Simulator passiert (normale Geräte werden kompiliert).

Wenn ich versuche zu kompilieren, bekomme ich einen "Apple Mach-O Librarian Error", der mir die folgende Textwand gibt:

  

Libtool build / DevOnly-iphonesimulator / libCozi \ Common \ Code.a normal   i386       cd / Benutzer / jr / ios / app / iCozi       setenv IPHONEOS_DEPLOYMENT_TARGET 4.3       setenv PATH "/Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/XCode5/Xcode.app/Contents/Developer/usr/bin:/usr/bin: / bin: / usr / sbin: / sbin "       /Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool   -static -arch_only i386 -syslibroot /Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk   -L / Benutzer / jr / ios / app / iCozi / build / DevOnly-iphonesimulator -L / Benutzer / jr / ios / app / iCozi / ../../ ext / aiMatch / SASIA_iOS_SDK-iphonesimulator   -L / Benutzer / jr / ios / app / iCozi /../../ ext / GoogleAdsSDK-iphone-v3.1 / Bibliothek -L / Benutzer / jr / ios / app / iCozi / .. / .. / ext / Google \ Analytics \ SDK / Library -L / Benutzer / jr / ios / app / iCozi / ../../ ext / AdMarvel_iOS_SDK_2_9_1 / AdMarvelSDK -L / Benutzer / jr / ios / app / iCozi / ../ .. /ext/libComScore-1.1107.12 -L / Benutzer / jr / ios / app / iCozi / ../../ ext / TestFlightSDK -L / Benutzer / jr / ios / app / iCozi / .. / .. / ext / mBlox-SDK / Debug-universal -L / Benutzer / jr / ios / app / iCozi / ../../ ext / mBlox-SDK / Release-universal -L / Benutzer / jr / ios / app / iCozi /. ./../ext/FacebookSDK/FacebookSDK.framework/Versions/A   -L / Benutzer / jr / ios / app / iCozi /../../ ext / GoogleConversionTrackingSDK -L / Benutzer / jr / ios / app / iCozi /../../ ext / TapjoyAdvertiserSDK / TapjoyAdvertiserLibrary   -L / Benutzer / jr / ios / app / iCozi / ../../ ext / MobileAppTracker.framework / Versionen / A   -filelist /Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly-iphonsimulator/Cozi \   Common \ Code.build/Objects-normal/i386/Cozi \ Common \ Code.LinkFileList   -all_load -ObjC -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __Einträge -Xlinker /Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly-iphonsimulator/Cozi \   Allgemein \ Code.build/Cozi \ Common \ Code.xcent -framework   MobileAppTracker   /Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libz.dylib   -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -framework Sicherheit-framework MobileCoreServices -framework CFNetwork-framework SystemConfiguration   -weak_framework MessageUI -framework QuartzCore /Users/jr/ios/ext/three20/Build/Products/Release-iphonsimulator/libThree20.a   /Users/jr/ios/ext/three20/Build/Products/Release-iphonsimulator/libThree20UI.a   /Users/jr/ios/ext/three20/Build/Products/Release-iphonsimulator/libThree20UINavigator.a   /Users/jr/ios/ext/three20/Build/Products/Release-iphonsimulator/libThree20UICommon.a   /Users/jr/ios/ext/three20/Build/Products/Release-iphonsimulator/libThree20Style.a   /Users/jr/ios/ext/three20/Build/Products/Release-iphonesimulator/libThree20Network.a   /Users/jr/ios/ext/three20/Build/Products/Release-iphonsimulator/libThree20Core.a   -framework CoreLocation -weak_framework MediaPlayer -weak_framework iAd -framework AVFoundation -framework AudioToolbox -lGoogleAnalytics   /Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libsqlite3.0.dylib   -weak_framework EventKit -weak_framework EventKitUI -lTestFlight -framework comScore -framework MDS-SDK-PhoneGap -lMDSCore-Framework FacebookSDK -lGoogleConversionTracking   /Users/jr/ios/ext/TapjoyAdveriserSDK/TapjoyAdvertiserLibrary/TapjoyAdvertiserLibrary.a   /Users/jr/ios/ext/FacebookSDK/FacebookSDK.framework/Versions/A/FacebookSDK   /Users/jr/ios/ext/MobileAppTracker.framework/Versions/A/MobileAppTracker   -o / Benutzer / jr / ios / app / iCozi / build / DevOnly-iphonesimulator / libCozi \ Common \ Code.a

     

/Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:   unbekanntes Optionszeichen 'X' in: -Xlinker Verwendung:   /Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool   -static [-] Datei [...] [-filelist listfile [, dirname]] [-arch_only arch] [-sacLT] Verwendung:   /Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool   -dynamische [-] Datei [...] [-filelist listfile [, dirname]] [-arch_only arch] [-o Ausgabe] [-install_name name] [-compatibility_version #]   [-current_version #] [-seg1addr 0x #] [-segs_read_only_addr 0x #]   [-segs_read_write_addr 0x #] [-seg_addr_table]   [-seg_addr_table_filename] [-all_load]   [-noall_load] Befehl   /Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain / usr / bin / libtool   fehlgeschlagen mit Exitcode 1

Die Ursache des Problems scheint "unbekanntes Optionszeichen 'X' in: -Xlinker" zu sein, aber Google hilft nicht viel bei diesem Fehler: Ссылка

"XLinker" erscheint vier Mal in der oberen Ebene ("... -all_load -ObjC -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __Einträge -Xlinker /Users/jr/ios/app/iCozi/build/iCozi.build / DevOnly-iphonesimulator / Cozi \ Common \ Code.build / Cozi \ Common \ Code.xcent. ".")

Nur zum Grinsen habe ich versucht, die Leerzeichen aus dem Zielnamen "Cozi Common Code" zu entfernen, aber das hat nicht geholfen.

Auch das kompiliert am XCode4-Simulator sehr gut, und es kompiliert in XCode5 gut für das Ausführen auf physischen Geräten, einschließlich eines iPods und eines iPads, aber jeder Simulator in XCode5 hat dieses Problem (iPhone / iPod / iPad, beide normal) und Retina, auf iOS5 / iOS6 / iOS7).

Ich würde wirklich jeden schätzen, der mir helfen kann, dem auf den Grund zu gehen. Danke!

    
dacoinminster 30.10.2013, 21:04
quelle

9 Antworten

13

Um den Fehler zu verstehen, müssen Sie verstehen, was der Befehl zu tun versucht.

In diesem Fall wird Libtool verwendet, was eine geringfügig veränderte Version von libtool ist. Es gibt einige Optionen, die in der Befehlszeile angegeben sind, aber was wir suchen, ist die Zieldatei, und diese wird als -o -Option übergeben, das Argument ist /Users/jr/ios/app/iCozi/build/DevOnly-iphonesimulator/libCozi\ Common\ Code.a und der Typ der Bibliothek, die wir haben. neu generieren, und in diesem Fall ist es -static . Beide Optionen geben explizit an, dass Sie ein statisches Bibliotheksarchiv erstellen.

Da Sie ein statisches Bibliotheksarchiv erstellen, nehmen Sie nur .o -Dateien und möglicherweise .a -Dateien und wandeln sie in eine andere .a -Datei um. Dies kann grob mit dem Erstellen einer .zip -Datei aus einer Reihe von Dateien ( .o ) und dem Inhalt anderer .zip -Dateien ( .a ) gleichgesetzt werden. Es gibt sehr wenige Dinge, die Sie bei der Erstellung dieses Archivs tun können. Sie können beispielsweise keine Bibliotheken angeben, die beim Erstellen eines statischen Archivs implizit verknüpft werden müssen. Sie können nicht angeben, dass Sie Berechtigungen benötigen.

>

Libtool beschwert sich, weil es die Optionen nicht versteht, die für eine statische Bibliothek verwendet werden, die übergeben werden. In diesem Fall sind die Optionen:

%Vor%

Dies sind Optionen, die vorhanden sind, wenn Sie versuchen, eine Berechtigungsdatei zu verknüpfen, was bedeutet, dass einige Optionen die Verwendung einer Berechtigungsdatei angeben. In diesem Fall haben Sie die richtige Lösung selbst gefunden, nämlich die in project settings - & gt; Code Signing - & gt; Code Signing Entitlements - & gt; DevOnly .

    
Petesh 10.11.2013, 16:46
quelle
2

Ich habe das gleiche Problem, und meine Lösung ist es, die nicht unterstützte Option "-Xliner" in der Befehlszeile von libtool zu löschen (Eigentlich sollte diese Option von libtool unterstützt werden, wie im Handbuch von libtool dokumentiert in gnu. Könnte xcode in libtool deaktivieren?)

Um diese Option zu löschen, versuche ich zuerst herauszufinden, welche Einstellung sie erzeugt. Auf meiner Seite ist Code-Signing. Ich habe das Projekt mit Code Signing "iOS Distribution" erstellt, während eine Identität mit dieser Signatur auch im Schlüsselbund vorhanden ist. Dies führt dazu, dass das Build-Tool diese Identität liest und versucht, etwas wie das Erzeugen einer zusätzlichen Link-Option für libtool zu tun.

Um es zu verwerfen, ändere ich die Signatur in "iOS Developer". Und ich denke, dass eine Entfernung der übereinstimmenden Identität auch funktioniert.

Ich hoffe, meine Lösung könnte für Sie hilfreich sein.

    
jingxw 08.11.2013 04:05
quelle
2

Überprüfen Sie zuerst das Schema, das Sie für Debug erstellen (Produkt - & gt; Schema - & gt; Schemas verwalten, dann wählen Sie Ziel und drücken Sie Bearbeiten) Wechseln Sie zu den Buildeinstellungen (sowohl im Projekt als auch im Ziel), suchen Sie nach Codesignatur und ändern Sie im Debuggen in Bereitstellungsprofile die Einstellung Automatisch, und melden Sie sich nicht bei Debug in Code Signing Identity an. Es hat mir geholfen, ich hoffe, es wird auch anderen helfen.

    
Iryna Tsimokhautsava 12.11.2014 09:04
quelle
1

Mein erster schneller Fehler ist, dass es ein falscher Alarm ist. Wenn ich Sie wäre, würde ich eine entsprechende Fehlersuche durchführen und Xcode, Projekt- und Simulatoreinstellungen usw. bereinigen.

Löschen Sie die Xcode-Voreinstellungsdatei (aus der allgemeinen und der Benutzerbibliothek) und starten Sie Xcode neu -

/ Bibliothek / Einstellungen

com.apple.dt.Xcode

/ Benutzer / YourUsername / Library / Preferences (Ich habe folgende 3 Dateien, die sich auf Xcode beziehen)

com.apple.dt.Xcode.plist

com.apple.dt.Xcode.LSSharedFileList.plist

com.apple.dt.Xcode.plist.BoGEJ0T

Alternatively - Versuchen Sie, das Projekt auf einem anderen Computer zu erstellen (oder wechseln Sie zu einem anderen Benutzer auf demselben Computer).

    
Ashok 30.10.2013 21:32
quelle
1

Dies ist nicht die ultimative Lösung, aber in meinem Fall, diese Übereinstimmung, weil ich versucht habe, "ReactiveCocoa" mit diesem Pod zu verwenden:

pod 'ReactiveCocoa', '3.0.0-alpha.1'

Und es automatisch installiert "LlamaKit", die Sie nicht unbedingt brauchen, wenn Sie ReactiveCocoa verwenden ...

Also habe ich zuerst die Poddatei entfernt und "pod install" ausgeführt. Dann löschte die "Podfile.lock" -Datei (im gleichen Ordner wie Ihr Projekt).

Dann habe ich diesen Pod benutzt:

pod 'ReactiveCocoa'

und führen Sie "pod install" noch einmal aus. sauberes Projekt, Lauf und viel Glück.

    
MCMatan 23.01.2015 19:09
quelle
1

Ich hatte aus irgendeinem Grund eine Datei mit einem "+" im Dateinamen in meinem Pods-Ordner. Habe es gelöscht und es hat super funktioniert

    
Mobile Bloke 27.05.2015 22:22
quelle
1

Ich habe auch die Apple Mach-O Librarian Error getroffen. Aber nachdem ich meine Build-Einstellungen überprüft hatte, fand ich Code Signing entitlement von sowohl myProject als auch Pods leer.

Da es sich um ein Problem der statischen Bibliothek handeln könnte, habe ich die Einstellung Mach-O type von Pods-myExtension von static library auf Dynamic library geändert und festgestellt, dass es funktioniert hat!

Mach-O type finden Sie in Pods-myExtension - & gt; Buildeinstellungen - & gt; Verknüpfung.

Ich hoffe, es hilft:)

    
thundertrick 12.07.2015 08:20
quelle
1

FWIW, dieser genaue Fehler kann auch bei Xcode 7.3.1 auftreten, wenn die Erstellungseinstellung "Code Signing Entitlements" irrtümlicherweise für ein Buildziel einer statischen Bibliothek festgelegt wurde, wo dies nicht wirklich zutrifft.

    
Oscar Hierro 11.08.2016 15:55
quelle
0

Um dieses Problem zu beheben, ändern Sie bitte das Schema so, dass es im Simulator debuggt, weil Sie die Freigabe ausgewählt haben.

    
RB Chauhan 02.09.2014 11:04
quelle

Tags und Links