小知识点~ gcc/g++ 使用


注:以下内容前提是目标系统已安装gcc/g++,若不确定是否安装,可通过gcc -v 语句进行查看!

1、精简

Linux系统中,gcc/g++ 是用于ccpp文件进行编译的工具。最简单的编译命令格式为:

gcc test.c -o test

其中 test.c 为目标文件,test 为编译后的执行文件。

案例如下
在这里插入图片描述

2、复杂

一般完整的编译过程需要经历以下几个阶段:

  • 预处理(进行宏替换)
  • 编译(生成汇编)
  • 汇编(生成机器可识别代码)
  • 连接(生成可执行文件或库文件)

2.1 预处理

预处理功能主要包括宏定义,文件包含,条件编译,去注释等。

其指令格式为

gcc –E test.c –o test.i

其中,选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。

2.2 编译

在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等, 以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。

其指令格式为

gcc –S test.i –o test.s

其中,用户可以使用“-S”选项来进行查看, 该选项只进行编译而不进行汇编,生成汇编代码。

2.3 汇编

该部分主要功能是生成机器可识别代码!

其指令格式为

gcc –c test.s –o test.o

其中,可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码。

2.4 连接

该部分主要功能是 生成可执行文件或库文件!

指令格式为

gcc test.o –o test

即在前面步骤成功进行编译之后,就进入了链接阶段。

2.5 案例

针对1中的程序,按上述步骤进行编译,具体过程如下

在这里插入图片描述
注意:以上步骤中要注意大小写,因为gcc中的选项中会有大小写要求!!否则会报错,如下
在这里插入图片描述

3、指令总结

gcc选项

-E //只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S //编译到汇编语言不进行汇编和链接
-c //编译到目标代码
-o //文件输出到 文件
-static //此选项对生成的文件采用静态链接
-g //生成调试信息。GNU 调试器可利用该信息。
-shared //此选项将尽量使用动态库,所以生成文件比较小,但是需要系统有动态库.
-O0
-O1
-O2
-O3 //编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w //不生成任何警告信息。
-Wall //生成所有警告信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值