linux系统下的编译命令根据项目规模和编译需求不同,有多种不同的选择,最常用的是gcc、make和cmake相关命令,不同的命令对应不同的使用场景。

单文件编译:gcc命令
如果是单个C或者C++源文件,直接使用gcc命令就可以完成编译,gcc是linux系统自带的GNU编译器套件,支持多种编程语言的编译。
基本用法
编译单个C源文件的命令格式如下:
# 编译test.c文件,生成名为test的可执行程序 gcc test.c -o test
如果是C++源文件,可以使用g++命令,用法和gcc类似:
# 编译test.cpp文件,生成名为test的可执行程序 g++ test.cpp -o test
常用编译参数
- -o:指定输出的可执行文件名称,如果不加这个参数,默认会生成a.out文件
- -g:在编译时加入调试信息,方便后续使用gdb进行调试
- -Wall:开启所有常用的警告提示,帮助开发者发现代码中的潜在问题
- -O2:开启二级优化,提升生成的可执行程序的运行效率
多文件项目编译:make命令
当项目包含多个源文件时,手动逐个调用gcc编译会非常繁琐,这时候可以使用make命令,make会根据Makefile文件中的规则自动完成编译工作。
Makefile基本结构
Makefile中主要包含目标、依赖和命令三个部分,基本格式如下:
# 目标:依赖
# 命令(命令前必须是Tab键,不能是空格)
target: dependency
command
示例Makefile
假设项目有两个源文件main.c和func.c,对应的头文件是func.h,Makefile可以这样编写:
# 最终生成的可执行程序
app: main.o func.o
gcc main.o func.o -o app
# main.o的依赖和编译命令
main.o: main.c func.h
gcc -c main.c -o main.o
# func.o的依赖和编译命令
func.o: func.c func.h
gcc -c func.c -o func.o
# 清理编译生成的中间文件
clean:
rm -f *.o app
编写好Makefile之后,在终端执行make命令就可以自动完成编译,执行make clean可以清理编译生成的文件。
复杂项目编译:cmake命令
如果项目结构非常复杂,手动编写Makefile也会很麻烦,这时候可以使用cmake工具,cmake可以根据CMakeLists.txt配置文件自动生成Makefile,再配合make完成编译。
基本使用流程
首先编写CMakeLists.txt文件,示例如下:
# 指定cmake最低版本 cmake_minimum_required(VERSION 3.10) # 指定项目名称 project(my_app) # 指定要编译的源文件 add_executable(my_app main.c func.c)
然后在终端执行以下命令完成编译:
# 创建build目录,用于存放编译生成的文件,避免污染源码目录 mkdir build cd build # 生成Makefile cmake .. # 执行编译 make
不同编译命令的适用场景
| 命令 | 适用场景 |
|---|---|
| gcc/g++ | 单个源文件的简单编译,快速测试代码片段 |
| make | 多文件的中小型项目,手动维护Makefile成本不高的情况 |
| cmake | 结构复杂的大型项目,跨平台编译需求的项目 |
除了上述命令之外,linux系统下还有clang、icc等其他编译器对应的编译命令,不过使用场景相对较少,开发者可以根据实际需求选择对应的编译工具。
gccmakecmakelinux_compilation修改时间:2026-07-24 02:33:21