1. 安装与版本管理
build-essential包快速获取GCC及必要工具链(GCC、G++、GDB等),命令为sudo apt update && sudo apt install build-essential。apt-cache policy gcc-9),安装后通过update-alternatives设置默认版本(如sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90)。build-essential flex bison libgmp-dev等),配置(../configure --prefix=/usr/local/gcc-x.x),编译(make -j$(nproc))并安装,最后更新环境变量(export PATH=/usr/local/gcc-x.x/bin:$PATH)。2. 编译优化技巧
-O2:平衡性能与编译时间,适用于大多数场景(启用循环优化、常量传播等)。-O3:更高优化(向量化、循环展开),提升性能但增加编译时间和二进制大小。-Os:优化代码大小,适用于嵌入式或内存受限环境。-march=native自动检测当前CPU特性(如AVX2、SSE4),生成最优代码;-mtune=native调整指令调度以适配CPU,不限制指令集。-flto在链接阶段进一步优化代码(减少冗余、内联跨模块函数),提升性能(需GCC 4.5+)。fprofile-generate:编译时生成性能数据(gcc -O2 -fprofile-generate -o prog prog.c)。./prog),生成.gcda文件。fprofile-use:用收集的数据重新编译(gcc -O2 -fprofile-use -o optimized_prog prog.c),针对性优化热点代码。3. 编译速度优化
make -jN(N为CPU核心数,如make -j4),充分利用多核加速编译(尤其适合大型项目)。ccache(sudo apt install ccache),缓存编译结果(避免重复编译未修改的文件),减少编译时间(可通过export PATH="/usr/lib/ccache:$PATH"优先使用)。common.h)生成预编译头文件(gcc -E -o common.h.gch common.h),编译时包含(gcc -include common.h -o prog prog.c),减少重复解析时间。4. 调试与诊断
-g选项,生成调试符号(gcc -g -o prog prog.c),配合GDB调试(gdb ./prog,可设置断点、单步执行、查看变量)。-Wall(启用所有常见警告)和-Wextra(启用额外警告),提前发现代码潜在问题(如未初始化变量、类型不匹配)。gprof:编译时添加-pg(gcc -O2 -pg -o prog prog.c),运行程序生成gmon.out,用gprof prog gmon.out > analysis.txt分析函数耗时。perf:Linux内核工具(sudo apt install linux-tools-common),记录性能事件(perf record -g ./prog),生成火焰图(perf report)定位瓶颈。5. 跨平台编译
sudo apt install gcc-arm-linux-gnueabihf)。-march=armv7-a)、ABI(-mfloat-abi=hard)、库路径(-L/path/to/target/libs),例如arm-linux-gnueabihf-gcc -march=armv7-a -o prog prog.c。qemu-user-static模拟目标环境,或使用Docker容器)。6. 工具与环境优化
sudo apt install gcc-xx-backports,xx为目标版本)或Sid(不稳定版,sudo apt install gcc)获取最新版本,享受性能改进和新特性。PATH(如export PATH=/usr/local/gcc-x.x/bin:$PATH),优先使用指定版本;设置CCACHE_DIR(如export CCACHE_DIR=/tmp/ccache)指定ccache缓存目录。build-essential确保基础依赖完整,避免编译时因缺少库(如libc6-dev)导致失败。