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宏。
评论