You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

静态编译C++程序遇/usr/bin/ld找不到-lstdc++等错误的解决办法

解决方案

一、初始编译错误(找不到-lstdc++、-lm、-lc)的修复

静态编译依赖库的静态版本,多数发行版默认不预装这类包,需手动安装:

1. 安装对应静态库包(CentOS/RHEL 7/8环境)

  • 若使用系统默认GCC:
    sudo yum install glibc-static libstdc++-static
    
  • 若使用devtoolset-9(对应你的场景):
    sudo yum install devtoolset-9-glibc-static devtoolset-9-libstdc++-static
    

2. 验证静态库是否安装成功

检查devtoolset-9路径下的静态库文件:

ls /opt/rh/devtoolset-9/root/usr/lib64/libc.a
ls /opt/rh/devtoolset-9/root/usr/lib64/libm.a

输出文件路径则说明安装有效。

二、启用devtoolset-9后仍存在-lm、-lc错误的处理

  1. 确保正确激活devtoolset-9环境
    不要仅临时启用,通过scl命令进入完整环境后再编译:
scl enable devtoolset-9 bash
g++ -std=c++11 main.cpp -static
  1. 手动指定静态库路径
    若自动搜索路径失效,强制指定devtoolset的库路径:
g++ -std=c++11 main.cpp -static -L/opt/rh/devtoolset-9/root/usr/lib64
  1. 直接链接静态库文件
    如果上述方法仍无效,直接指定静态库文件进行编译:
g++ -std=c++11 main.cpp /opt/rh/devtoolset-9/root/usr/lib64/libc.a /opt/rh/devtoolset-9/root/usr/lib64/libm.a /opt/rh/devtoolset-9/root/usr/lib64/libstdc++.a

三、额外排查方向

  • 检查静态库文件权限:若当前用户无读取权限,执行sudo chmod +r /opt/rh/devtoolset-9/root/usr/lib64/*.a
  • 确认系统架构匹配:32位系统检查/usr/lib路径,64位系统检查/usr/lib64或devtoolset对应的lib64路径

内容的提问来源于stack exchange,提问作者basil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:25:25