【问题标题】:ld: library not found for -lzld: 找不到 -lz 的库
【发布时间】:2012-03-21 11:28:04
【问题描述】:

这让我发疯了,当我尝试在模拟器上编译时,一切正常,但在设备上我得到了这个错误:

ld: library not found for -lz
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1

请帮助我了解问题的根源:

    Ld /Users/ZConsulting/Library/Developer/Xcode/DerivedData/Fontenay-sous-Bois-dhlecgdgtoldsadoctkyueriyius/Build/Products/Debug-iphoneos/Fontenay-sous-Bois.app/Fontenay-sous-Bois normal armv7
        cd /Users/ZConsulting/Desktop/Fontenay-sous-Bois
        setenv IPHONEOS_DEPLOYMENT_TARGET 5.0
        setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
        /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Users/ZConsulting/Library/Developer/Xcode/DerivedData/Fontenay-sous-Bois-dhlecgdgtoldsadoctkyueriyius/Build/Products
/Debug-iphoneos -F/Users/ZConsulting/Library/Developer/Xcode/DerivedData/Fontenay-sous-Bois-dhlecgdgtoldsadoctkyueriyius/Build/Products/Debug-iphoneos -F/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
/iPhoneOS5.0.sdk/Developer/Library/Frameworks -filelist /Users/ZConsulting/Library/Developer/Xcode/DerivedData/Fontenay-sous-Bois-dhlecgdgtoldsadoctkyueriyius/Build/Intermediates/Fontenay-sous-Bois.build/Debug-iphoneos/Fontenay-sous-Bois.build/Objects-normal/armv7/Fontenay-sous-Bois.LinkFileList -dead_strip -fobjc-arc -miphoneos-version-min=5.0 -framework SenTestingKit -lz -lz.1.1.3 -framework MobileCoreServices
 -framework SystemConfiguration -framework CFNetwork -framework CoreLocation -framework MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/ZConsulting/Library/Developer/Xcode/DerivedData/Fontenay-sous-Bois-dhlecgdgtoldsadoctkyueriyius/Build/Products/Debug-iphoneos/Fontenay-sous-Bois.app/Fontenay-sous-Bois

编辑:

我确实导入了 libz.1.1.3.dylib 框架:

我在链接框架中获得的唯一 libz 是 libz.1.1.3.dylib

【问题讨论】:

    标签: objective-c ios xcode4.2


    【解决方案1】:

    您确实在 Linked frameworks and Libraries 项中指定了库 libz.dylib,而不是直接引用 libz.1.1.3 - 通常您应该使用最通用的库版本进行编译,而不是更具体的版本

    其次,确保 libz.dylib 存在于 iOS SDK 下 - 如果它丢失,那么它可能是一个错误安装的 SDK(重新安装应该可以解决这个问题)。

    find /Developer/Platforms -name libz.dylib
    

    应该导致libz.dylibiPhoneOS5.0.sdk 下的非空输出

    另请参阅iPhone - Linker Error in Xcode 4.2 Preview 的答案,这是与此类似的问题。

    【讨论】:

    • 我已经导入了 libz.1.1.3.dylib 库,请看一下我的编辑,这是我用模拟器编译的,但是因为我尝试建立一个档案,我得到了那个。
    • 是的,模拟器使用与设备不同的位置。你最好导入通用的libz.dylib 而不是特定的libz.1.1.3。尝试find /Developer/Platforms -name libz.1.1.3.dylib 并检查它是否在iPhoneOS5.0.sdk iPhoneSimulator5.0.sdk 中都可以找到。如果没有找到,那么我建议只用libz.dylib 替换它。您应该有一个令人信服的理由来使用 libz 的1.1.3 版本来引用该特定版本(通常这些库是向上兼容的)
    • 我在列表中获得的唯一 libz 框架是 libz.1.1.3.dylib,请查看我的更新。
    • 在这种情况下,您似乎安装了无效的 SDK - 从我的 5.0 SDK 我看到一堆 libz.*.dylibs - libz.1.1.3.dyliblibz.1.2.5.dyliblibz.1.dylib libz.dylib 和他们'是唯一真正的文件是 libz.1.2.5.dylib;其余的是对该文件的引用。我建议在执行干净卸载后重新安装 Xcode 4.2 - 按照关于 Xcode 自述文件中的说明进行卸载,然后重新安装。或者,使用 pacifist 之类的 .pkg 提取工具,然后在当前文件上重新提取 iPhoneOS5.0.sdk。
    【解决方案2】:

    我在使用不同的库时遇到了同样的错误:

    ld: library not found for -lssl
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    解决这个问题,在search paths -> user header search paths -> release 我把:

    "$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/include"
    

    请记住,我只有在存档时才会遇到此错误,而且我的存档是基于我的发布方案..


    更新: 对于lpods 库(即cocoapods),我遇到了同样的问题(在不同的场合/项目中)。我想解决这个问题的方法是意识到构建在我的development 方案上运行良好,但不是我的debug 计划。基本上development 方案对build active architectures onlyno,而debug 有。我只是将debug 更改为 no in all cocoapods 下的目标

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 2011-03-23
      • 2012-05-13
      • 2014-08-21
      • 2014-12-13
      • 1970-01-01
      • 2016-04-03
      • 2021-10-24
      • 2017-03-31
      相关资源
      最近更新 更多