CentOS 上配置 C++ 的关键注意事项
一 基础环境准备
sudo yum groupinstall 'Development Tools' -y,并补充常用工具 gcc gcc-c++ make cmake git gdb。gcc -v、g++ -v、cmake --version、gdb -v,确保命令可用且版本符合项目要求。二 编译器与标准支持
sudo yum install -y centos-release-scl devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils,临时启用 scl enable devtoolset-11 bash,或写入 shell 配置实现登录即启用:echo "source /opt/rh/devtoolset-11/enable" >> ~/.bash_profile。-std=c++14/-std=c++17/-std=c++20;需要更高优化时再考虑 -O2/-O3 与(可选)LTO。clang/llvm-devel;若需 libc++/libc++abi,通常需要从源码分两步构建以打破循环依赖,再配合 -stdlib=libc++ 使用。三 构建与依赖管理
-I<头文件目录>、-L<库目录>、-l<库名> 精确控制;避免滥用全局路径。LD_LIBRARY_PATH,或在 /etc/ld.so.conf.d/*.conf 中配置并运行 ldconfig),否则会出现“找不到共享库”的错误。g++ -std=c++17 -O2 -g -o app main.cpp;多文件可先 -c 生成目标文件再链接;库的制作与使用遵循“静态库 .a 直接归档、动态库 .so 需 -fPIC -shared 并在运行时可被发现”的原则。四 常见坑与排查
Can't locate IPC/Cmd.pm,安装 perl-IPC-Cmd 即可。/usr/bin/cmake。./configure 失败;升级到 1.16.x 再构建。/usr/bin/g++(或当前启用的 devtoolset 路径)。五 运行与性能调优建议
ulimit -n)、按需调整 vm.swappiness、使用 numactl 控制 NUMA 亲和、用 taskset 绑定 CPU 核心,减少上下文切换与跨 NUMA 访问。-g 且避免高优化。