Linux 编译器之 GCC

GCC

编辑器是指我用它来写程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行

GCC(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。GCC 原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如 Linux、BSD、Mac OS X 等)采纳为标准的编译器,GCC 同样适用于微软的 Windows。

gcc识别的文件扩展名如下:

.c C 语言文件
.i 预处理后的 C 语言文件
.C、.cc、.cp、.cpp、.c++、.cxx C++语言文件
.ii 预处理后的 C++ 语言文件
.S 汇编文件(用户自己新建的汇编文件)
.s 预处理后的汇编文件
.o 编译后的目标文件
.a 目标文件的静态链接库(链接时使用)这个是重点
.so 目标文件的动态链接库(链接、运行时使用)这个是重点

gcc 和 g++ 编译器的编译过程

1、预处理

2、编译

3、汇编

4、链接

在这里插入图片描述
gcc 常用编译应用实例

分步编译:

1)gcc -E hello.c -o hello.i

2)gcc -S hello.i -o hello.s

3)gcc -c hello.s -o hello.o

4)gcc hello.o -o hello_elf

编译选项说明:

-o file 指定生成的输出文件名为 file
-E 只进行预处理
-S 只进行预处理和编译
-c 只进行预处理、编译和汇编

文件名后缀说明:

.c C 语言文件
.i 预处理后的 C 语言文件
.s 预处理后的汇编文件
.o 编译后的目标文件

在这里插入图片描述
-Idir 将dir目录加入头文件搜索目录列表,优先在dir目录中查找包含的头文件
-Ldir 将dir目录加入库文件目录列表,优先在dir目录中查找库文件
-lname 链接库为name的库
-static 链接时使用静态库
-shared 编译动态库
-Wall 生成所有级别的警告信息
-w 关闭所有警告,建议不使用此选项

在这里插入图片描述

本篇文章来自于(谢谢大佬通俗易懂):https://blog.csdn.net/tennysonsky/article/details/44920447

猜你喜欢

转载自blog.csdn.net/qq_35433716/article/details/89640332