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



我当前被链接器错误阻止,该错误仅发生在XCode5上(XCode4编译良好)和模拟器上(正常设备编译良好)。

当我尝试编译时,我会收到一个"Apple Mach-O库管理员错误",它给了我以下的文本墙:

Libtool build/DevOnly iphonesimulator/libCozi\Common\Code.anormali386cd/Users/jr/ios/app/iCozisetenv IPHONEOS_DEPLOYMENT_TARGET 4.3setenv PATH"/Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platforme/Developer/usr/bin:/Applications/XCode5.Xcode.ap/Contents/Developer/usr/bin:/usr/bin://sbin:/sbin"/应用程序/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/DDeveloper/SDKs/iPhoneSimulator 7.0.sdk-L/Users/jr/ios/app/iCozi/build/DevOnly iphonesimulator-L/Users/jr/ios/ap/iCozi/..//ext/aiMatch/SASIA_iOS_SDK-iphonesimulator-L/Users/jr/ios/app/iCozi/..//ext/谷歌广告SDK-iphone-v3.1/Library-L/Users/jr/ios/app/iCozi/..//ext/Google\Analytic\SDK/Library-L/Users/jr/ios/app/iCozi/..//ext/AdMarvel_iOS_SDK_2_9_1/AdMarvel SDK-L/Users/jr/iOS/app/iCozi/..//ext/libComScore-11.07.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/TapjoyAvertiserDK/TapjoyAdvertiserLibrary-L/Users/jr/ios/app/iCozi/..//ext/MobileAppTracker.framework/Versions/A-filelist/Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly-iphoneimulator/Cozi\Common\Code.build/Objects normal/i386/Cozi\Common\Code。链接文件列表-all_load-ObjC-Xlinker-sectcreate-Xlinker__TEXT-Xlinker __authorities-Xlinker/Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly-iphoneimulator/Cozi\Common\Code.build/Cozi\Common\Code.xcent-框架MobileAppTracker/应用程序/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/DDeveloper/sdk/iPhoneSimulator7.0.sdk/usr/lib/libz.dylib-framework Foundation-framework UIKit-framework CoreGraphics-framework QuartzCore-framework Security-framework MobileCoreServices-framework CFNetwork-framework 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_foramework iAd-framework AVFoundation-framework AudioToolbox-lGoogleAnalytics/应用程序/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/DDeveloper/sdk/iPhoneSimulator7.0.sdk/usr/lib/libsqlite3.0.dylib-weak_framework EventKit-weak_fframework EventKitUI-lTestFlight-framework comScore-framework MDS SDK PhoneGap-lMDSCore-framework FacebookSDK-lGoogleConversionTracking/Users/jr/ios/ext/TapjoyAvertiserDK/TapjoyAdvertiserLibrary/Tapjoy AdvertisterLibrary.a/用户/jr/ios/ext/FacebookSDK/FacebookSDK.framework/Versions/A/FacebookSDK/用户/jr/ios/ext/MobileAppTracker.framework/Versions/A/MobileAppsTracker-o/Users/jr/ios/app/iCozi/build/DevOnly iphonesimulator/libCozi\Common\Code.

/Applications/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:未知选项字符"X"位于:-Xlinker用法:/应用程序/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool-static[-]file[…][-filelist listfile[,dirname][-arch_only arch][-sacLT]用法:/应用程序/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool-动态[-]文件[…][-filelist列表文件[,目录名]][-arch_only arch][-o输出][-install_name名称][-compatibility_version#][-current_version#][-seg1地址0x%][-segs_read_only_addr 0x%][-segs_read_write_addr 0x%][-seg_addr_table][-seg_addr_table_filename][-all_load][-noall_load]命令/应用程序/XCode5/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool失败,退出代码为1

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

"XLinker"在上面的混乱中出现了四次("…-all_load-OjC-XLinker-sectcreate-XLinker __TEXT-XLinker __权利-XLinker/Users/jr/ios/app/iCozi/build/iCozi.build/DevOnly iphonesimulator/Cozi\Common\Code.build/Cozi\Compon\Code.xcent…")

只是笑笑,我试着从"Cozi Common Code"目标名称中删除空格,但无济于事。

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

我真的很感激任何能帮我弄清真相的人。谢谢

为了理解错误,您必须了解命令试图做什么。

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

因为您正在制作一个静态库归档,所以您实际要做的唯一事情就是获取.o文件,可能还有.a文件,并将它们转换为另一个.a文件。这可以大致等同于从一组文件(.o)和其他.zip文件的内容(.a)创建.zip文件。在制作此存档时,您可以做的事情很少,例如,您不能指定在构建静态存档时需要隐式链接的库,也不能指定您将需要授权。

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

当您试图链接到授权文件时,会出现这些选项,这意味着某些选项指定了授权文件的使用。在这种情况下,您自己找到了正确的解决方案,即删除project settings->Code Signing->Code Signing Entitlements->DevOnly中指定的授权文件。

我遇到了同样的问题,我的解决方法是删除libtool命令行中不支持的选项"-Xliner"(实际上我认为这个选项应该得到libtool的支持,正如gnu中libtool手册中所述。xcode可能会在libtool中禁用它吗?)

要删除这个选项,我首先尝试找出是哪个设置生成的。在我看来,这是代码签名。我用代码签名"iOS Distribution"构建了这个项目,而与此签名相对应的身份也存在于钥匙链中。这将导致构建工具读取该标识,并尝试为libtool生成额外的链接选项。

为了消除它,我将签名改为"iOS开发者"。我认为删除对应的身份也是有效的。

希望我的解决方案能对你有所帮助。

首先检查为调试构建的方案(产品->方案->管理方案,然后选择目标并按编辑)转到"生成设置"(在项目和目标中),找到"代码签名",并在"设置配置文件"中的"调试"中更改为"自动",在"代码签名标识"中不进行代码签名"调试"。它帮助了我,希望它也能帮助其他人)

我对这个错误的第一个快速判断是,这是一个错误警报。如果我是你,我会做一些相应的故障排除,并清理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-尝试在其他机器上构建项目(或切换到同一机器上的其他用户)。

这不是的最终解决方案,但在我的情况下,这是一致的,因为我试图将"ReactiveCocoa"与这个pod一起使用:

pod‘ReactiveCocoa’,‘3.0.0α.1’

它自动安装了"LlamaKit",在使用ReactiveCocoa时不一定需要它。。。

因此,首先我删除了podfile,运行"pod-install"。然后删除了"Podfile.lock"文件(位于与您的项目相同的文件夹中)。

然后使用这个吊舱:

吊舱"反应可可">

然后再次运行"pod install"。干净的项目,运行,祝你好运。

由于某种原因,我的pods文件夹中有一个文件名为"+"的文件。删除它,它工作得很好

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

由于这可能是静态库的问题,我刚刚将Pods myExtensionMach-O type设置从static library更改为Dynamic library,发现它有效!

Mach-O type可以在Pods myExtension->构建设置->链接中找到。

希望有帮助:)

FWIW,如果错误地为静态库构建目标设置了"代码签名权限"构建设置,则Xcode 7.3.1上也可能发生此错误,而该设置并不真正适用。

要解决此问题,请将模式更改为在模拟器中调试,这是因为您选择了发布。

最新更新