调试XCode LD链接器命令失败1找不到文件:/usr/lib/libFosl_dynamic.dylib用于体系结构armv7

时间:2014-08-02 14:31:27

标签: ios xcode unsatisfiedlinkerror

我在链接一个非常复杂的项目时遇到此错误,我需要知道调试它的最佳方法。

我为ld:

打开了以下环境变量
export RC_TRACE_ARCHIVES=1
export RC_TRACE_DYLIBS=1
export RC_TRACE_PREBINDING_DISABLED=1

并将-t -whyload -whatsloaded选项添加到ld。

来自ld的最后消息是:

[Logging for XBS] Used indirect dynamic library: /Applications/Xcode6-
    Beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/
    SDKs/iPhoneOS8.0.sdk/
    System/Library/PrivateFrameworks/FaceCore.framework/FaceCore
ld: file not found: /usr/lib/libFosl_dynamic.dylib for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是关于如何调试此错误的一般问题,但具体来说,我使用的是XCode 6 beta 4.这可能是导致错误的原因。我需要使用XCode 6来实现其动态框架功能。

有谁知道libFosl_dynamic.dylib是什么?任何人都可以提供有关如何确定哪个对象模块,静态库或其他dylib触发了加载此libFosl_dynamic.dylib模块的要求的信息吗?

我在派生数据目录中grep&#f; ed:

/Users/"user"/Library/Developer/Xcode/
    DerivedData/EngineSdkDemo-gbkxniqxsljcxybhbszrwqyrzdwq

找到文件" app" _dependency_info.dat。该文件显然包含将要加载的库列表,从而导致无法找到的库。该文件中的最后一个条目是:

...
/Applications/Xcode6-Beta4.app/Contents/Developer/Platforms/
    iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/
    Library/PrivateFrameworks/FaceCore.framework/FaceCore
/Users/<user>/Library/Developer/Xcode/DerivedData/
    EngineSdkDemo-gbkxniqxsljcxybhbszrwqyrzdwq/Build/Products/
    Debug-iphoneos/libFosl_dynamic.dylib
<Library search path 1>/libFosl_dynamic.dylib
<Library search path 2>/libFosl_dynamic.dylib
<Library search path 3>/libFosl_dynamic.dylib
<Library search path 4>/libFosl_dynamic.dylib
<Library search path 5>/libFosl_dynamic.dylib
...

显然ld正在搜索我的所有图书馆搜索路径,试图找到该文件,但它并不存在于我的Mac上的任何地方。

(2014年8月3日)更多:我在XCode 6 beta 4 iOS 8 frameworks文件夹中查看:

/Applications/Xcode6-Beta4.app/Contents/Developer
    /Platforms/iPhoneOS.platform/Developer
    /SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks

我在coreimage.framework中找到了一个热门。 MacDepencencies的伟大工具 (here)列出了对/usr/lib/libFosl_dynamic.dylib的依赖关系。显然这是XCode 6 beta 4中的一个错误。该dylib不包含在发行版中。

(8/3/14)更多:我终于找到了一个libFosl_dynamic.dylib文件。它隐藏在XCode iOS 8 SDK文件夹中:

/Applications/Xcode6-Beta4.app/Contents/Developer
    /Platforms/iPhoneSimulator.platform/Developer/SDKs
    /iPhoneSimulator8.0.sdk/usr/lib

我将文件复制到/ usr / lib。

既然文件本身没有丢失,我从链接器中得到以下新错误:

ld: in '/usr/lib/libFosl_dynamic.dylib', missing required architecture armv7 in file
    /usr/lib/libFosl_dynamic.dylib (2 slices) for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

(8/3/14):更多:iOS 8 SDK中的特定文件仅支持i386和X86-64架构。

(8/3/14)更多:当然它只支持i386和X86-64架构!我刚注意到该文件来自iPhoneSimulator.platform。相应的iPhoneOS.platform文件夹中缺少该文件。

(8/3/14)更多:该文件不存在于iPhoneOS.platform文件(模拟器或设备)的XCode 5.1.1版本中。它出现在XCode 6 Beta 2(仅限模拟器)中,这是我拥有的第一个XCode 6 Beta版本。显然,这个问题是在XCode 6中引入的。

谢谢, 鲍勃

0 个答案:

没有答案