通过make的-j选项启用多任务并行编译,充分利用多核CPU资源。建议使用nproc命令自动获取CPU核心数,例如:
make -j$(nproc)
这会根据系统核心数启动对应数量的并行编译任务,显著缩短整体编译时间。
对于包含大量公共头文件的项目(如STL、第三方库),预编译头文件可避免重复解析。步骤如下:
pch.h),包含常用头文件:// pch.h
#ifndef PCH_H
#define PCH_H
#include <iostream>
#include <vector>
#include <string>
#endif // PCH_H
.gch格式:g++ -x c++-header -o pch.h.gch pch.h
-include选项引入预编译头文件:g++ -include pch.h -o myprogram myprogram.cpp
或在Makefile中添加-include pch.h到编译选项。ccache通过缓存编译结果,避免重复编译未修改的源文件。安装与配置步骤:
sudo yum install ccache
export PATH="/usr/lib/ccache:$PATH"
ccache命令:ccache g++ -o myprogram myprogram.cpp
ccache会自动缓存编译结果,后续相同代码可直接从缓存读取。distcc将编译任务分发到局域网内的多台机器,进一步提升编译速度。步骤如下:
sudo yum install distcc
distccd --daemon --allow 192.168.1.0/24 --user nobody
~/.bashrc):export DISTCC_HOSTS="192.168.1.2 192.168.1.3 192.168.1.4"
source ~/.bashrc
--distcc选项:g++ -o myprogram myprogram.cpp --distcc -j$(nproc)
注意:需确保所有节点安装相同版本的GCC/G++。选择合适的编译选项可在不影响性能的前提下减少编译时间:
-O2(平衡编译时间与性能),避免-O3(可能增加编译时间);-march=native针对当前CPU生成优化代码(如AVX指令集);-flto在链接阶段进行跨模块优化,提升最终程序性能。g++ -O2 -march=native -flto -o myprogram myprogram.cpp
CentOS 7默认GCC版本较旧(如4.8),升级到较新版本(如GCC 8+)可获得更好的编译性能和优化支持。升级步骤(以GCC 9为例):
sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++
scl enable devtoolset-9 bash
此时默认gcc/g++即为9版本。传统make工具效率较低,可切换至更快的构建系统:
mkdir build && cd build
cmake -G Ninja ..
ninja -j$(nproc)
-DCMAKE_BUILD_TYPE=Release启用优化。ulimit -n 65535
永久生效可修改/etc/security/limits.conf文件。