细谈linux gcc的入门相关知识和用法(超详细)

目录

第一:linux gcc包含的c/c++编译器  gcc  、cc  、c++  、g++

第二:gcc特点

第三:gcc的运行过程

第四:gcc选项

第五:gcc所遵循的部分约定规则


 

第一:linux gcc包含的c/c++编译器  gcc  、cc  、c++  、g++

其中gcc和cc是一样的,c++和g++是一样的,一般c语言程序就用gcc编译,c++程序就用g++编译。


第二:gcc特点

gcc是一个可移植的编译器,支持多种硬件平台。例如ARM、X86等等。
gcc不仅是个本地编译器,它还能跨平台交叉编译。所谓的本地编译器,是指编译出来的程序只能够在本地环境进行运行。而gcc编译出来的程序能够在其他平台进行运行。
gcc有多种语言前端,用于解析不同的语言另外gcc是按模块化设计的,可以加入新语言和新CPU架构的支持。gcc是自由软件。任何人都可以使用或更改这个软件。


第三:gcc的运行过程

(1)在命令行输入:   gcc  test.c

这样会默认编译出一个名为  a.out的程序,

再在命令行输入 :./a.out

就可以运行程序。  

(2)如果在命令行输入: gcc  test.c  -o  test

这样将编译出一个名为test的程序

再在命令行输入 :./test

就可以运行程序。

  注:其中  -o 参数  用来指定生成程序的名字

(3)分步执行,更具体形象

其中包含4个过程:

1.预处理

本质 会进行4个操作(包括头文件的展开、去掉注释、宏替换、条件编译)、

具体操作:命令行输入:  gcc -E  test.c  -o test.i

这句命令意思是:走完预处理第一步就会停下来,将产生的临时内容存放在 test.i文件中

2.编译

本质 就是把c语言变成汇编语言

具体操作:命令行输入: gcc -S  test.i  -o test.s

这句命令意思是: 走完编译第二步就会停下来,将产生的临时内容存放在 test.s文件中

3.汇编

本质 就是把汇编语言变成目标二进制文件(不可执行)

具体操作:命令行输入: gcc -c  test.s -o test.o

这句命令意思是:走完汇编第三步就会停下来,将产生的临时内容存放在 test.o文件中

4.链接

本质 就是引入我们在代码中使用的第三方库生成可执行文件或库文件

(第三方库由编译器和文件后缀共同决定)


第四:gcc选项

-E只进行预处理操作
-S编译到汇编停止(不进行汇编,只完成预处理和编译)
-c进行汇编操作(编译到汇编代码)

-O[0,1,2,3]

优化程序(默认为2级优化,0不优化,3优化级别最高)
-static对生成的文件采用静态链接
-shared尽量使用动态库
-Idir

将dir目录加入搜索头文件的目录路径

-Ldir

将dir目录加入搜索库的目录路径

-llib

连接lib库

-Wall使gcc对源文件的代码有问题的地方发出警告信息
-W不发出警告信息
-g在目标文件中生成调试信息,以便gdb之类的调试程序调试
-ggdb生成更多调试信息

第五:gcc所遵循的部分约定规则

首先先谈一个概念,不是说linux中一切都是文件吗?后缀没有用吗?但在gcc中,后缀是非常重要的,用来区分文件的类别。我简单总结了几种后缀:

后缀                                     类别
.c                           C语言源代码文件
.C /   .cc /   .cxx                            C++源代码文件
.h                           程序所包含的头文件
.i                           已经预处理过的C源代码文件
.ii                           已经预处理过的C++源代码文件
.a                           由目标文件构成的库文件
.o                            编译后的目标文件
.s                            汇编语言源代码文件
.S                             经过预编译的汇编语言源代码文件
.m                             Objective-C源代码文件

 

 

 

 

 

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洁洁!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值