一、安装GCC编译器
在Ubuntu中使用GCC前,需先通过包管理器安装。推荐使用build-essential工具包(包含GCC、G++、Make等基础编译工具),命令如下:
sudo apt update # 更新软件包列表
sudo apt install build-essential # 安装build-essential(自动包含GCC)
安装完成后,通过gcc --version验证是否成功,若输出GCC版本信息(如gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0),则表示安装完成。
二、编译简单C程序
以经典的“Hello, World!”程序为例,步骤如下:
nano、vim或gedit)创建hello.c,内容如下:#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
hello.c编译为可执行文件hello:gcc -o hello hello.c
其中,-o hello指定输出文件名(默认为a.out)。./hello,若输出Hello, World!\n,则表示编译成功。三、常用编译选项
GCC提供丰富的选项控制编译流程,以下是常用选项:
-o <文件名>:指定输出文件名(如gcc hello.c -o hello)。-c:仅编译源文件为.o目标文件(不链接),如gcc -c hello.c生成hello.o。-E:仅进行预处理(展开宏、包含头文件等),输出.i文件,如gcc -E hello.c -o hello.i。-S:将预处理后的代码编译为汇编代码(.s文件),如gcc -S hello.i。-g:生成调试信息(配合gdb使用),如gcc -g hello.c -o hello。-O<级别>:启用优化(-O1、-O2、-O3,级别越高优化效果越好,但编译时间越长),如gcc -O2 hello.c -o hello。四、多源文件编译
若项目有多个源文件(如main.c、util.c),有两种编译方式:
gcc main.c util.c -o my_program
适用于文件较少、修改不频繁的项目。.o),再链接为目标文件,命令如下:gcc -c main.c # 生成main.o
gcc -c util.c # 生成util.o
gcc -o my_program main.o util.o # 链接为目标文件
适用于大型项目,仅修改某个源文件时,只需重新编译该文件,提高效率。五、编译C++程序
GCC支持C++编译,但需使用g++命令(而非gcc)。例如,编译hello.cpp(C++源文件):
g++ -o hello_cpp hello.cpp
g++会自动链接C++标准库(如libstdc++),无需额外指定。
六、链接外部库
若程序使用外部库(如数学库math.h),需链接对应的库文件。例如,编译使用sqrt函数的程序:
gcc -o sqrt_program sqrt.c -lm
其中,-lm表示链接数学库(libm.so)。库名前的lib和后缀.so(动态库)可省略,GCC会自动补全。
七、常见问题解决
gcc: command not found:表示GCC未安装或未添加到系统路径。解决方法:确认build-essential已安装(sudo apt install build-essential),并通过which gcc检查路径。sudo apt --fix-broken install修复,或清除缓存后重新安装(sudo apt clean && sudo apt install -f)。lib<库名>-dev,如libssl-dev),或手动指定库路径(-L<路径>)。