MacOS11.5运行Qt Creator5.0.2报dyld: Symbol not found: __cg_DGifCloseFile错误
错误产生原因
- MacOS 11(Big Sur)开始对系统内置的图像处理框架做了架构调整:苹果将原本独立放在*/System/Library/Frameworks/ImageIO.framework/Resources*路径下的libGIF.dylib等第三方编码库,直接整合进了ImageIO.framework的主二进制文件中,不再对外暴露独立的dylib文件和对应的私有符号,这就是你在11.5系统对应路径找不到该文件的核心原因。
- Qt Creator 5.0.2版本本身存在适配缺陷:该版本是基于MacOS 10.x系列的SDK编译构建的,编译阶段的链接配置默认会依赖独立外置的libGIF.dylib库的符号,没有适配MacOS 11+的新框架结构,运行时找不到对应依赖就会触发dyld报错。
- 本地第三方libGIF库冲突会加剧报错:如果你本地通过Homebrew等包管理器安装了开源版本的libgif库,会被动态链接器优先在*/usr/local/lib/*路径下读取到,但开源版本的libGIF.dylib没有带苹果自定义的
__cg_前缀的私有符号(比如报错里的__cg_DGifCloseFile),无法满足ImageIO.framework的符号依赖要求,会直接触发本次报错。
可行的解决方法
- 优先升级Qt Creator到6.0及以上正式版本,这些版本已经完成了MacOS 11+系统的适配,不存在该依赖问题。
- 如果必须使用5.0.2版本,可以先卸载本地通过Homebrew安装的libgif包,避免动态链接器优先读取不兼容的第三方库;也可以在启动Qt Creator时临时指定系统框架优先加载,执行命令:
DYLD_FRAMEWORK_PATH=/System/Library/Frameworks /Applications/Qt\ Creator.app/Contents/MacOS/Qt\ Creator - 也可以对Qt Creator的二进制文件添加禁用库验证的签名权限,避免优先读取/usr/local路径下的第三方依赖库。
内容的提问来源于stack exchange,提问作者MustangYM
相关产品推荐
相关产品推荐

