跳转到内容
命令速查toolchain

gcc:编译与链接 C 程序

使用 GCC 驱动预处理、编译、汇编和链接 C 程序,并确认编译器目标与输出文件。

状态
已审阅
难度
进阶
风险
会改变系统
平台
linux · debian · ubuntu

gcc 是 GCC 的编译器驱动。一次常规调用依次执行预处理、编译、汇编和链接;交叉编译器通常使用带目标前缀的名称,例如 aarch64-linux-gnu-gcc

Terminal window
gcc [选项] 输入文件 ...
选项 作用
--version 显示编译器版本。
-dumpmachine 显示编译器配置的目标系统标识。
-E 只预处理。
-S 编译到汇编代码后停止。
-c 生成目标文件,不执行链接。
-o 文件 指定输出文件。
-Wall -Wextra -Wpedantic 启用一组常用诊断。
-std=c17 选择 C17 语言标准。

编译并链接单个 C 源文件:

Terminal window
gcc -std=c17 -Wall -Wextra -Wpedantic -O2 -o hello hello.c

只生成目标文件,并检查编译器目标:

Terminal window
gcc -c -o hello.o hello.c
gcc -dumpmachine

成功时通常没有终端输出,可通过退出状态和输出文件共同确认结果。

  • -o 指向已有文件时会覆盖它;应在专用构建目录中操作。
  • 没有诊断不代表程序逻辑正确;警告也不等同于完整的静态分析。
  • 编译器目标名称、ELF 架构和目标系统 ABI 都匹配后,产物才可能在目标机运行。
  • 不要使用管理员权限编译普通项目,也不要执行来源不明的构建脚本。

原生 gcc 默认面向其配置目标;交叉编译器名称和可用多库由工具链提供者决定。BusyBox 不包含 GCC。某些系统上的 gcc 命令也可能由兼容驱动提供,应以 gcc --versiongcc -dumpmachine 的实际输出为准。