升级到 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')的主要内容,如果未能解决你的问题,请参考以下文章