M1 Mac Sublime用GCC编译C/C++出现dylib版本不匹配警告如何修复
M1芯片macOS设备GCC编译dylib版本不匹配警告修复方案
该警告产生的原因是通过Homebrew安装的g++-11依赖的libstdc++.dylib库是基于macOS 11.4版本编译生成的,而你当前编译代码时默认的链接目标版本为11.0,二者版本不匹配触发了警告。
修复方案
- 单次编译临时生效
编译时额外添加-mmacosx-version-min=11.4参数即可,示例命令:g++-11 your_code.cpp -o output -mmacosx-version-min=11.4 - Sublime编辑器永久生效
打开Sublime中C/C++对应的.sublime-build编译配置文件,修改编译命令字段,添加上述参数即可,修改后示例配置:
保存配置后重启Sublime即可,后续所有通过Sublime执行的C/C++编译都不会触发该警告。{ "cmd": ["g++-11", "${file}", "-o", "${file_path}/${file_base_name}", "-mmacosx-version-min=11.4"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir": "${file_path}", "selector": "source.c, source.c++" } - 全局环境永久生效
如果你需要所有场景下的g++-11编译都默认适配该版本,可在shell配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile)中添加如下两行配置:
配置完成后执行export MACOSX_DEPLOYMENT_TARGET=11.4 export CXXFLAGS="$CXXFLAGS -mmacosx-version-min=11.4"source ~/.zshrc(根据你使用的shell选择对应配置文件路径)使配置即时生效。
注意:如果后续你升级了Homebrew安装的GCC版本,警告中提示的目标macOS版本号发生变化,将上述配置中的
11.4替换为警告中显示的新版本号即可。
内容的提问来源于stack exchange,提问作者Aashu tiwari
相关产品推荐
相关产品推荐

