8

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

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

Libtool build/DevOnly-iphonesimulator/libCozi\ Common\ Code.a normal i386 cd /Users/jr/ios/app/iCozi setenv IPHONEOS_DEPLOYMENT_TARGET 4.3 setenv PATH "/Applications/XCode5/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.平台/开发者/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/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/库-L/Users/jr/ios/app/iCozi/../../ext/Google\ Analytics\ SDK/库-L/Users/jr/ios/app/iCozi/../../ ext/AdMarvel_iOS_SDK_2_9_1/AdMarvelSDK -L/Users/jr/ios/app/iCozi/../../ext/libComScore-1.1107.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\通用\代码。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/Developer/SDKs/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_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/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框架/版本/A/MobileAppTracker -o /Users/jr/ios/app/iCozi/build/DevOnly-iphonesimulator/libCozi\ Common\ Code.a框架/版本/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:未知选项字符“X”在:-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 ] [-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] 命令 /Applications/XCode5 /Xcode.app/Contents/Developer/Toolchains/XcodeDefault。xctoolchain/usr/bin/libtool 失败,退出代码为 1

问题的根源似乎是“-Xlinker 中的未知选项字符‘X’”,但谷歌并没有为该错误提供太多帮助:https ://www.google.com/search?q=%22% 60X%27+in%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 上)。

我真的很感谢任何可以帮助我了解这一点的人。谢谢!

4

9 回答 9

13

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

在这种情况下,它使用Libtool的是libtool. 在命令行中指定了一些选项,但是我们要查找的是目标文件,并且这是作为-o选项传入的,谁的参数是/Users/jr/ios/app/iCozi/build/DevOnly-iphonesimulator/libCozi\ Common\ Code.a,以及我们正在生成的库的类型,并且在这个情况是-static。这两个选项一起明确声明您正在制作静态库存档。

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

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

于 2013-11-10T16:46:24.043 回答
2

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

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

为了解除它,我将签名更改为“iOS Developer”。而且我认为删除相应的身份也有效。

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

于 2013-11-08T04:05:55.437 回答
2

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

于 2014-11-12T09:04:46.527 回答
1

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

于 2013-10-30T21:32:47.193 回答
1

不是最终的解决方案,但就我而言,这是因为我试图在这个 pod 中使用“ReactiveCocoa”:

豆荚'ReactiveCocoa','3.0.0-alpha.1'

它自动安装了“LlamaKit”,你在使用 ReactiveCocoa 时不一定需要...

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

然后使用了这个吊舱:

豆荚'ReactiveCocoa'

并再次运行“pod install”。清理项目,运行,祝你好运。

于 2015-01-23T19:09:28.130 回答
1

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

于 2015-05-27T22:22:02.393 回答
1

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

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

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

希望能帮助到你:)

于 2015-07-12T08:20:37.670 回答
1

FWIW,如果“代码签名权利”构建设置被错误地设置为静态库构建目标,Xcode 7.3.1 上也可能发生这个确切的错误,它并不真正适用。

于 2016-08-11T15:55:35.180 回答
0

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

于 2014-09-02T11:04:24.023 回答