## 1. Linux环境下C程序编译方法详解 ### 1.1 基础GCC编译流程 在Linux嵌入式开发中GCC是最基础的编译工具链。以下展示从源代码到可执行文件的完整编译过程 c // hello.c示例代码 #include stdio.h int main(void) { printf(Hello world\n); return 0; }标准编译命令gcc hello.c -o hello1.1.1 分阶段编译过程预处理阶段gcc -E hello.c -o hello.i展开宏定义和头文件生成预处理后的.i文件编译阶段gcc -S hello.i -o hello.s将预处理文件转换为汇编代码.s文件汇编阶段gcc -c hello.s -o hello.o生成机器码.o目标文件链接阶段gcc hello.o -o hello解析库函数引用生成最终可执行文件1.2 Make工程管理1.2.1 基础Makefile编写当项目包含多个源文件时推荐使用Make工具管理编译流程# 基础Makefile示例 hello: hello.c gcc hello.c -o hello执行编译make1.2.2 分阶段Makefile实现# 详细编译过程控制 all: hello hello.i: hello.c gcc -E hello.c -o hello.i hello.s: hello.i gcc -S hello.i -o hello.s hello.o: hello.s gcc -c hello.s -o hello.o hello: hello.o gcc hello.o -o hello clean: rm -f hello.i hello.s hello.o hello1.3 CMake跨平台构建1.3.1 命令行方式安装CMake工具sudo apt install cmake创建CMakeLists.txtcmake_minimum_required(VERSION 3.10.2) project(cmake_test) add_executable(cmake_test hello.c)构建流程mkdir build cd build cmake .. make1.3.2 图形化界面方式安装cmake-guisudo apt install cmake-qt-gui启动配置界面cmake-gui设置参数指定源代码路径设置生成路径建议build目录点击Configure选择生成器点击Generate生成Makefile1.4 工程实践建议版本控制建议将CMakeLists.txt与源代码共同纳入版本管理避免在版本库中包含build目录目录结构project_root/ ├── CMakeLists.txt ├── src/ │ └── hello.c ├── include/ └── build/交叉编译配置set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g)调试支持gcc -g hello.c -o hello # 生成调试符号 gdb ./hello # 启动调试会话
Linux下C程序编译与构建工具详解
发布时间:2026/5/19 5:05:18
## 1. Linux环境下C程序编译方法详解 ### 1.1 基础GCC编译流程 在Linux嵌入式开发中GCC是最基础的编译工具链。以下展示从源代码到可执行文件的完整编译过程 c // hello.c示例代码 #include stdio.h int main(void) { printf(Hello world\n); return 0; }标准编译命令gcc hello.c -o hello1.1.1 分阶段编译过程预处理阶段gcc -E hello.c -o hello.i展开宏定义和头文件生成预处理后的.i文件编译阶段gcc -S hello.i -o hello.s将预处理文件转换为汇编代码.s文件汇编阶段gcc -c hello.s -o hello.o生成机器码.o目标文件链接阶段gcc hello.o -o hello解析库函数引用生成最终可执行文件1.2 Make工程管理1.2.1 基础Makefile编写当项目包含多个源文件时推荐使用Make工具管理编译流程# 基础Makefile示例 hello: hello.c gcc hello.c -o hello执行编译make1.2.2 分阶段Makefile实现# 详细编译过程控制 all: hello hello.i: hello.c gcc -E hello.c -o hello.i hello.s: hello.i gcc -S hello.i -o hello.s hello.o: hello.s gcc -c hello.s -o hello.o hello: hello.o gcc hello.o -o hello clean: rm -f hello.i hello.s hello.o hello1.3 CMake跨平台构建1.3.1 命令行方式安装CMake工具sudo apt install cmake创建CMakeLists.txtcmake_minimum_required(VERSION 3.10.2) project(cmake_test) add_executable(cmake_test hello.c)构建流程mkdir build cd build cmake .. make1.3.2 图形化界面方式安装cmake-guisudo apt install cmake-qt-gui启动配置界面cmake-gui设置参数指定源代码路径设置生成路径建议build目录点击Configure选择生成器点击Generate生成Makefile1.4 工程实践建议版本控制建议将CMakeLists.txt与源代码共同纳入版本管理避免在版本库中包含build目录目录结构project_root/ ├── CMakeLists.txt ├── src/ │ └── hello.c ├── include/ └── build/交叉编译配置set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g)调试支持gcc -g hello.c -o hello # 生成调试符号 gdb ./hello # 启动调试会话