Linux 开发系列笔记(1.2) - GCC/G++ 基本使用
建站提交历史文章,原文写作时间 2023 年 2 月前后。
GCC/G++ 基本使用
介绍
-
GCC原名GNU C Complier,GNU C语言编译器。现在GCC,GNU Complier Collection,由GNU开发的编译器套件,支持多种语言的编译,包括:C、C++、Objective-C、Java、Ada以及Go语言前端。 -
安装:
sudo apt install gcc g++ -
标准:
GCC/G++支持多种C语言与C++标准,编译参数为:-std=C99。 -
版本:
gcc/g++ -v/--version
工作原理
- 预处理器:对C/C++代码进行预处理,包括消除注释、宏替换、头文件展开与优化
常用命令
| 命令 | 描述 |
|---|---|
| gcc test.c | 生成可执行文件 a.out |
| gcc test.c -o test | 生成可执行文件 test |
| gcc test.c -c -o test.o | 生成目标代码 test.o |
| gcc test.c -o test -I include -L lib -l libxxx.a | 指定头文件与库文件搜索目录 |
| gcc test.c -D DEBUG -o test | 生成宏 DEBUG |
| 开关 | 描述 |
|---|---|
| -o | 生成文件,否则某些情况下将打印至命令行并不生成文件 |
| -E | 生成预处理代码 |
| -S | 生成汇编代码 |
| -c | 生成目标代码 |
| -g | 生成调试信息,该程序可以被调试器调试 |
| -D * | 生成宏 |
| -w | 不生成任何警告 |
| -Wall | 生成所有警告 |
| -O* | 开启编译器优化,包括-O0、-O1(默认)、-O2、-O3。 |
| - * | 指定头文件搜索目录 |
| -L * | 指定库文件搜索目录 |
| - | 指定导入的库文件 |
| -fpic/-fPIC | 生成与位置无关的代码 |
| -shared | 生成共享文件 |
| -std * | 指定C语言/C++标准 |
GCC与G++的区别
- GCC可以编译C++代码,但是不能完成C++代码的链接,G++在编译代码时会调用GCC,例如,以下是等价的:
1 | $ g++ test.cpp -o test |
1 | $ gcc test.cpp -c -o test.o // 使用GCC生成目标代码 |
- 使用G++/GCC编译会生成__cplusplus宏。
评论
