升级Xcode 15后无法使用g++-13编译独立C++程序求助
解决方案
1. 消除 ld: warning: ignoring duplicate libraries: '-lgcc' 警告
- 问题根源:Xcode 15更新后,链接器ld会自动引入gcc相关依赖库,手动在编译参数中添加
-lgcc就会触发重复引用警告。 - 修复步骤:
- 检查编译脚本、Makefile或构建配置,移除手动添加的
-lgcc参数; - 若使用CMake,找到
target_link_libraries或CMAKE_EXE_LINKER_FLAGS配置项,删除其中的-lgcc; - 若无法直接移除参数,可添加链接选项
-Wl,--no-duplicate-libs,强制ld忽略重复库警告(优先推荐直接移除重复参数)。
- 检查编译脚本、Makefile或构建配置,移除手动添加的
2. Xcode 15下正常使用g++-13编译独立C++程序
Xcode 15调整了系统链接器路径,导致第三方gcc工具链的链接环节出错,可通过以下方式修复:
- 指定替代链接器
在编译命令中显式指定g++-13兼容的链接器,例如使用lld:
或指定gcc自带的gold链接器(路径根据你的安装位置调整):g++-13 your_program.cpp -o your_program -fuse-ld=lldg++-13 your_program.cpp -o your_program -Wl,--ld-path=/usr/local/bin/ld.gold - 配置环境变量
临时设置环境变量,让g++-13优先调用自身的工具链组件:
设置完成后再执行编译命令即可。export PATH="/usr/local/opt/gcc/bin:$PATH" export LDFLAGS="-L/usr/local/opt/gcc/lib/gcc/13" - 指定SDK路径
编译时通过-isysroot参数指定Xcode 15的SDK路径,确保g++-13能正确找到系统库:g++-13 your_program.cpp -o your_program -isysroot $(xcrun --show-sdk-path)
内容的提问来源于stack exchange,提问作者Devansh Nigam
相关产品推荐
相关产品推荐

