在 Debian 上使用 GCC 编译 C 程序的步骤
一 安装与验证
- 更新软件包索引并安装编译工具链:sudo apt update && sudo apt install build-essential。该元包包含 GCC、G++、Make 等常用开发工具。
- 验证安装:gcc --version,看到版本号即表示安装成功。
- 可选:如需特定版本(如 GCC 10),可安装 gcc-10/g+±10 并通过 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g+±10 设置默认编译器。
二 编写与编译运行
三 多文件与库链接
- 多源文件:gcc main.c utils.c -o app。
- 静态/动态库:
- 编译位置无关目标:gcc -fPIC -c utils.c -o utils.o
- 生成共享库:gcc -shared -o libutils.so utils.o
- 链接使用:gcc main.c -L. -lutils -o app(运行前确保库路径在 LD_LIBRARY_PATH 或使用 rpath)。
- 数学库示例:gcc hello.c -o hello -lm。
四 分步编译与查看流程
- 预处理:gcc -E hello.c -o hello.i(展开头文件与宏)。
- 编译成汇编:gcc -S hello.i -o hello.s。
- 汇编成目标文件:gcc -c hello.s -o hello.o(或 gcc -c hello.c -o hello.o)。
- 链接生成可执行文件:gcc hello.o -o hello。
- 查看详细过程:gcc -v -o hello hello.c;也可查阅手册 man gcc。
五 调试与优化建议
- 调试:编译时加 -g,使用 gdb ./hello 设置断点、查看变量与调用栈。
- 内存检查:安装并使用 Valgrind:sudo apt install valgrind,运行 valgrind --leak-check=full ./hello。
- 优化选择:开发阶段优先 -O2(兼顾性能与可调试性),发布时可用 -O3;避免过度优化导致调试困难。