Qt Creator项目突发故障:symbol(s) not found for architecture x86_64
回答
我之前在Mac High Sierra 10.13上用Qt Creator开发时也碰到过一模一样的诡异链接器问题,折腾了好几天才解决,分享几个亲测有效的步骤:
清空Qt Creator的全局缓存
单个项目的缓存清理没用的话,大概率是Qt Creator的全局缓存炸了。操作步骤:- 完全关闭Qt Creator
- 删除
~/.qtcreator目录(这是Qt Creator的配置和缓存文件夹) - 删除
~/Library/Application Support/Qt Creator下的Cache和Build相关子文件夹 - 重新打开Qt Creator,重新构建项目
检查并匹配Xcode命令行工具版本
High Sierra 10.13.4对Xcode版本比较挑剔,最好用Xcode 9.3对应的命令行工具。你可以在终端输入xcode-select -v查看当前版本,如果不对,去Apple开发者官网下载对应版本的命令行工具安装,安装后重启电脑。切换Qt自带的构建套件
有时候系统默认的clang编译器会和Qt的链接器有兼容性问题。打开Qt Creator的工具 -> 选项 -> 构建和运行,检查你的Kit是否使用了Qt安装包自带的编译器(比如Qt 5.x clang 64bit),如果用的是系统的,切换过去试试。禁用增量构建
增量构建的中间文件很容易损坏,导致链接错误。在项目的构建配置里,找到构建步骤 -> Make,取消勾选增量构建选项;或者直接在终端进入项目构建目录,运行make clean && make来强制全量构建。更新系统动态链接缓存
Mac的dyld缓存偶尔会出问题,影响链接过程。在终端运行sudo update_dyld_shared_cache -force,输入密码后执行,完成后重启电脑再试。
因为连官方示例都出问题,说明绝对不是你代码的问题,肯定是工具链或者缓存的锅,按上面的步骤一个个试,应该能解决。
内容的提问来源于stack exchange,提问作者user3252344

