XCode5模拟器:未知选项字符“X”在:-Xlinker

我目前被一个链接器错误,只发生在XCode5(XCode4编译罚款),只有在模拟器(正常的设备编译正常)阻塞。

当我尝试编译时,我得到一个“Apple Mach-O Librarian Error”,它给了我以下的文本:

libtool build / DevOnly-iphonesimulator / libCozi \ Common \ Code.a正常i386 cd / Users / 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/目录/ 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 / Users / jr / ios / app / iCozi / build / DevOnly-iphonesimulator -L / Users / jr / ios / app / iCozi /../../ ext / aiMatch / SASIA_iOS_SDK-iphonesimulator -L / Users / jr /ios/app/iCozi/../../ext/GoogleAdsSDK-iphone-v3.1/Library -L / Users / jr / ios / app / iCozi /../../ ext / Google \ Analytics \ SDK / Library -L / Users / jr / ios / app / iCozi /../../ ext / AdMarvel_iOS_SDK_2_9_1 / AdMarvelSDK -L / Users / jr / ios / app / iCozi /../../ ext / libComScore-1.1107 0.12 -L / Users / jr / ios / app / iCozi /../../ ext / TestFlightSDK -L / Users / jr / ios / app / iCozi /../../ ext / mBlox-SDK / Debug-universal -L / Users / jr / ios / app / iCozi /../../ ext / mBlox-SDK / Release-universal -L / Users / jr / ios / app / iCozi /../../ ext / FacebookSDK /FacebookSDK.framework/Versions/A -L / Users / jr / ios / app / iCozi /../../ ext / GoogleConversionTrackingSDK -L / Users / jr / ios / app / iCozi /../../ ext / TapjoyAdvertiserSDK / TapjoyAdvertiserLibrary -L / Users / jr / ios / app / iCozi /../../ ext / MobileAppTracker.framework / Versions / A -filelist /Users/jr/ios/app/iCozi/build/iCozi.build / DevOnly-iphonesimulator / Cozi \ Common \ Code.build/Objects-normal/i386/Cozi \ Common \ Code.LinkFileList -all_load -ObjC -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker / Users / jr / ios / app /iCozi/build/iCozi.build/DevOnly-iphonesimulator/Cozi \ Common \ Code.build / Cozi \ Common \ Code.xcent -framework MobileAppTracker /Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/开发商/软件开发工具包/ iPhoneSimulator7.0.sdk / usr / lib目录/ libz.dylib -framework基础框架UIKit框架CoreGraphics框架QuartzCore框架安全框架MobileCoreServices框架CFNetwork框架SystemConfiguration -weak_framework MessageUI -framework QuartzCore / Users / jr / ios / ext / three20 / Build / Products / Release-iphonesimulator / libThree20 .a /Users/jr/ios/ext/three20/Build/Products/Release-iphonesimulator/libThree20UI.a /Users/jr/ios/ext/three20/Build/Products/Release-iphonesimulator/libThree20UINavigator.a/ Users / jr /ios/ext/three20/Build/Products/Release-iphonesimulator/libThree20UICommon.a/Users/jr/ios/ext/three20/Build/Products/Release-iphonesimulator/libThree20Style.a/ Users / jr / ios / ext / three20 /Build/Products/Release-iphonesimulator/libThree20Network.a/Users/jr/ios/ext/three20/Build/Products/Release-iphonesimulator/libThree20Core.a -framework CoreLocation -weak_framework MediaPlayer -weak_framework iAd -framework AVFoundation -framework AudioToolbox – lGoogleAnalytics /Applications/XCode5/Xcode.app/Contents/Deve lovers / 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/TapjoyAdvertiserSDK/TapjoyAdvertiserLibrary/TapjoyAdvertiserLibrary.a/Users/jr/ios/ext/FacebookSDK/FacebookSDK.framework/Versions/A/FacebookSDK /Users/jr/ios/ext/MobileAppTracker.framework / Versions / A / MobileAppTracker -o / Users / jr / ios / app / iCozi / build / DevOnly -iphonesimulator / libCozi \ Common \ Code.a

/Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:unknown选项字符`X'in:-Xlinker用法:/Applications/XCode5/Xcode.app/Contents/Developer/ Toolchains / XcodeDefault.xctoolchain / usr / bin / libtool -static [ – ] file […] [-filelist listfile [,dirname]] [-arch_only arch] [-sacLT]用法:/Applications/XCode5/Xcode.app /Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -dynamic [ – ] file […] [-filelist listfile [,dirname]] [-arch_only arch] [-o output] [-install_name name [-seg_addr_table_file] [-all_load] [-noall_load]命令/应用程序/ XCode5 [-seg1addr 0x#] [-segs_read_only_addr 0x#] [-segs_read_write_addr 0x#] [-seg_addr_table] /Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool失败,退出代码1

问题的根源似乎是“-Xlinker”中的“未知选项字符X”,但Google对此错误没有太多帮助: https : //www.google.com/search? q =%22% 60X%27 +在%3A + Xlinker%22

“XLinker”在上面的混乱中出现了四次(“…。-all_load -ObjC -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly- iphonesimulator / Cozi \ Common \ Code.build / Cozi \ Common \ Code.xcent …“)

只是为了咧嘴笑,我尝试从“Cozi Common Code”目标名称中删除空格,但这并没有帮助。

同样,这个编译器在XCode4模拟器上编译得很好,在XCode5中编译运行在物理设备上,包括iPod和iPad,但XCode5中的每个模拟器都有这个问题(iPhone / iPod / iPad,普通视网膜和视网膜,在iOS5 / iOS6 / iOS7上)。

我真的很感谢任何能帮助我深究的人。 谢谢!

为了理解错误,您必须了解命令正在尝试执行的操作。

在这种情况下,它使用Libtool ,这是一个稍微改变的libtool版本。 有一些选项是在命令行中指定的,但是我们要查找的是目标文件,这是作为-o选项传递的,参数是/Users/jr/ios/app/iCozi/build/DevOnly-iphonesimulator/libCozi\ Common\ Code.a ,以及我们正在生成的库的types,在这种情况下它是-static 。 两个选项一起明确指出您正在创build一个静态库存档。

因为你正在创build一个静态库文件,所以你唯一需要做的就是.o文件和可能的.a文件,并把它们转换成另一个.a文件。 这可以大致等同于从一组文件( .o )创build.zip文件以及其他.zip文件( .a )的内容。 在创build该归档文件时,您可以执行的操作很less,例如,您无法指定在构build静态归档时需要隐式链接的库,也不能指定要求授权。

libtool抱怨,因为它不理解被传入的静态库的选项。在这种情况下,选项是:

 -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly-iphonesimulator/Cozi\ Common\ Code.build/Cozi\ Common\ Code.xcent 

这些选项是在尝试链接授权文件时出现的,这意味着有些选项指定使用授权文件。 在这种情况下,您自己find了正确的解决scheme,即删除project settings – > Code Signing – > Code Signing Entitlements – > DevOnly指定的授权文件。

我遇到了同样的问题,我的解决方法是在libtool的命令行中清除不支持的选项“-Xliner”(实际上我认为这个选项应该由libtool支持,就像在gnu的libtool手册中​​logging的一样。可能是xcode在libtool中禁用它?)

要清除这个选项,我首先试着找出哪个设置生成它。 在我身边,这是代码签名。 我使用代码签名“iOS Distribution”来构build项目,而与此签名相对应的身份也存在于钥匙串中。 这将导致构build工具读取此标识,并尝试执行一些操作,例如为libtool生成额外的链接选项。

要解雇它,我将签名更改为“iOS Developer”。 而我认为删除相应的身份也起作用。

希望我的解决scheme可以帮助你。

首先检查您为Debug创build的scheme(产品 – >scheme – >pipe理scheme,然后select目标并按编辑)转到构build设置(包括项目和目标),find代码签名,并在调配中更改为自动调配并且不要在代码签名标识中对代码签名进行debugging。 它帮助了我,希望它能帮助别人)

我的第一个快速承担这个错误是这是一个虚惊 。 如果我是你,我会做一些相应的故障排除和清理Xcode,项目和模拟器设置等

尝试删除Xcode的首选项文件(从公共和用户库都),并重新启动Xcode –

/库/首选项

com.apple.dt.Xcode

/ Users / YourUsername / Library / Preferences(我有以下3个与Xcode相关的文件)

com.apple.dt.Xcode.plist

com.apple.dt.Xcode.LSSharedFileList.plist

com.apple.dt.Xcode.plist.BoGEJ0T

Alternatively – 尝试在其他机器上构build项目(或切换到同一台机器上的其他用户)。

不是最终的解决scheme,但在我的情况下,这个协议,因为我试图使用“ReactiveCocoa”这个pod:

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

它会自动安装“LlamaKit”,女巫你不一定需要使用ReactiveCocoa时…

所以首先我删除了podfile,运行“pod install”。 然后删除“Podfile.lock”文件(在与您的项目相同的文件夹)。

然后使用这个荚:

荚'ReactiveCocoa'

再次运行“pod install”。 干净的项目,运行,祝你好运。

由于某种原因,我的文件夹中的文件名中有一个带有“+”的文件。 删除它,它运作良好

我也遇到了Apple Mach-O Librarian Error 。 但是在检查我的构build设置后,我发现myProjectPods的 Code Signing entitlement都是空的。

因为这可能是一个静态库的问题,我只是将Pods-myExtensionMach-O type设置从static library更改为Dynamic library并发现它的工作!

Mach-O type可以在Pods-myExtension – > Build Settings – > Linking中find。

希望能帮助到你:)

FWIW,如果“Code Signing Entitlements”构build设置被错误地设置为静态库构build目标,那么它在Xcode 7.3.1上也会发生这种确切的错误。

要解决这个问题,请将模式更改为在模拟器中进行debugging,这是因为您select了发布。