升级到 macOS Big Sur 11.01 后,Cocos2d-x 4.0 app build 不再工作(错误:没有这样的文件或目录:'/usr/lib/libz.dylib')

Posted

技术标签:

【中文标题】升级到 macOS Big Sur 11.01 后,Cocos2d-x 4.0 app build 不再工作(错误:没有这样的文件或目录:\'/usr/lib/libz.dylib\')【英文标题】:Cocos2d-x 4.0 app build no longer works after upgrade to macOS Big Sur 11.01 (error: no such file or directory: '/usr/lib/libz.dylib')升级到 macOS Big Sur 11.01 后,Cocos2d-x 4.0 app build 不再工作(错误:没有这样的文件或目录:'/usr/lib/libz.dylib') 【发布时间】:2021-02-26 17:13:43 【问题描述】:

升级到 macOS Big Sur 11.01 后出现以下错误:

clang:错误:没有这样的文件或目录:'/usr/lib/libz.dylib' 铿锵声:错误:没有这样的文件或目录:'/usr/lib/libiconv.dylib' 命令 Ld 失败,退出代码非零

如何重现: 使用以下方法制作新的 cocos2d-x 项目:

cocos -n -d 目录名 -l cpp cd 目录名/MyCppGame mkdir build-iphone cd build-iphone cmake .. -GXcode -DCMAKE_SYSTEM_NAME=ios -DCMAKE_OSX_SYSROOT=iphoneos

打开生成的 xcode 项目(更改包标识符)并构建

版本:

macOS Big sur 11.01 CMake 3.18 或 CMake 3.19.0-rc3 cocos2d-x v4.0 Xcode 12.2

【问题讨论】:

你最后用了什么解决方案? 我仍然使用第一个答案,因为我使用 cmake 来构建应用程序(cmake 也是这样做的)。如果您只有一两个项目,您可以使用其他答案。 【参考方案1】:

你可以这样解决这个问题。

其他链接器标志

libz.dylib => -lz libiconv.dylib => -liconv

祝你好运。

【讨论】:

【参考方案2】:

我在 cocos2d-x v4.0 库的 cmake/modules/ 中更改了文件:'CocosConfigDepend.cmake'。

    elseif(IOS)
        # Locate system libraries on iOS
        find_library(UIKIT_LIBRARY UIKit)
        find_library(OPENGLES_LIBRARY OpenGLES)
        find_library(CORE_MOTION_LIBRARY CoreMotion)
        find_library(AVKIT_LIBRARY AVKit)
        find_library(CORE_MEDIA_LIBRARY CoreMedia)
        find_library(CORE_TEXT_LIBRARY CoreText)
        find_library(SECURITY_LIBRARY Security)
        find_library(CORE_GRAPHICS_LIBRARY CoreGraphics)
        find_library(AV_FOUNDATION_LIBRARY AVFoundation)
        find_library(WEBKIT_LIBRARY WebKit)
   
        find_library(ZLIB z)
        find_library(ICONVLIB iconv)

        list(APPEND PLATFORM_SPECIFIC_LIBS
             $UIKIT_LIBRARY
             $OPENGLES_LIBRARY
             $CORE_MOTION_LIBRARY
             $AVKIT_LIBRARY
             $CORE_MEDIA_LIBRARY
             $CORE_TEXT_LIBRARY
             $SECURITY_LIBRARY
             $CORE_GRAPHICS_LIBRARY
             $AV_FOUNDATION_LIBRARY
             $WEBKIT_LIBRARY
             $COCOS_APPLE_LIBS
             $ZLIB
             $ICONVLIB
             #"/usr/lib/libz.dylib"
             #"/usr/lib/libiconv.dylib"
             )
    endif()

添加了 ZLIB 和 ICONVLIB,并删除了完整路径行。

【讨论】:

这更像是一个 hack。我们需要一个适当的解决方案来解决这个问题。您是否尝试过使用像 Homebrew 这样的包管理器来安装库?以下是链接:formulae.brew.sh/formula/libiconv 和 formulae.brew.sh/formula/zlib【参考方案3】:

我已检查文件夹 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib

文件 libz.dylib 和 libiconv.dylib 不存在。我认为你应该使用文件 libz.tbd 和 libiconv.tbd

Project/Build Settings/Other Linker Flags

【讨论】:

我从构建设置(其他链接标志)中删除了它们并将它们添加到构建阶段。此手动解决方案有效,谢谢。但是我怎么能用 cmake 做到这一点呢? 可以参考your_project_name/cocos2d/cmake/Modules/CocosConfigDepend.cmake【参考方案4】:

可以build setting查找链接替换

第一步

/usr/lib/libz.dylib

替换

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libiconv.dylib

第二步

/usr/lib/libiconv.dylib

替换

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libz.dylib

【讨论】:

以上是关于升级到 macOS Big Sur 11.01 后,Cocos2d-x 4.0 app build 不再工作(错误:没有这样的文件或目录:'/usr/lib/libz.dylib')的主要内容,如果未能解决你的问题,请参考以下文章

MacOS升级到Big Sur后Homebrew报错

MacOS升级到Big Sur后Homebrew报错

MacOS升级到Big Sur后Homebrew报错

MacOS升级到Big Sur后Homebrew报错

将 macOS 从 Big Sur 升级到 Monterey 后,发布请求出现 403 禁止错误

升级到 macOS Big Sur v11.0.1 后出现错误的 JAVA_HOME