gcc编译器编译各阶段

gcc编译器

gcc编译器是GNU开源组织发布的UNIX/Linux下的多平台的编译器。它可以将c、c++等多种语言编写的源文件编译、链接成可执行文件。 gdb是GNU下的调试器。

gcc可以编译c、c++、object c、java等多种语言,而且又是跨平台的,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件。很适合嵌入式。

编译四过程

1.预处理

2.编译

3.汇编

4.链接

gcc提供30多条警告信息和三个警告级别。gcc通过文件后缀名区别文件的类别。

.c c语言源文件

.a 由目标文件构成的档案库文件

.C .cc .cxx c++源文件

.h 头文件

.i 经过预处理过的c源代码文件

.ii 经过预处理过的c++源代码文件

.m Objctive -C 源代码

.o 编译后的目标文件

.s 汇编语言源代码文件

.S 经过预编译的汇编语言源代码文件

-o filename 指定输出文件名,这一项非必须,如果没指定,默认为a.out

-c 只编译不链接,生成目标代码.o

-S 只编译不汇编,生成汇编代码

-E 只进行预编译,不做其他处理

-g 在生成的可执行程序中包含标准调试信息

-v 打印编译器内部编译各过程的命令行信息和编译器的版本号

-I dir 在头文件的搜索路径列表把dir目录加进去(一般的头文件搜索路径是/usr/inclde)

-L dir在库文件的搜索路径列表把dir目录加进去(一般库文件的搜索路径是/usr/lib)

-static 链接静态库

-library 链接名为library的库文件

-Dmacro 定义指定的宏,使得#ifdef的时候有这个宏

-O、-O2、-O3 将优化状态打开,该选项不能与-g选项联合使用(优化就不包括调试信息了)

-Wall / -Werror 将发生警告时取消编译操作,即把警告当成错误

-w 禁止所有的警告

-pedantic 严格要求符号ANSI标准

如何使用gcc

gcc编译器的功能强大,包括警告提示功能、代码优化、链接库、使用管道加速

在linux下(比如hello.c)

1.进入代码文件所在的文件夹

2.gcc hello.c

改变可执行文件名 gcc -o hello hello.c

  1. ./a.out (./表示执行可执行文件)

gcc分步编译

1.第一步是预处理阶段

这一阶段会生成.i文件(它处理宏替换,处理预处理宏,头文件内容拷贝)

要生成这个文件的话需要下面的命令(查看文件 cat hello.i)

gcc -E hello.c -o hello.i

2.第二步 编译阶段

把 .i文件变成.s文件

要生成这个文件需要下面的命令

gcc -S hello.i -o hello.s

3.第三步 汇编阶段

把.s文件转化成.o文件

要生成这个文件需要下面的命令

gcc -c hello.s -o hello.o

4.第四步 链接阶段

将.o文件(机器代码文件)和其他机器代码文件或库文件,汇集成一个可执行的二进制代码文件。

要生成这个文件需要下面的命令

gcc hello.o -o hello

警告提示信息

gcc -pedantic hello.c -o hello(输入命令的时候按tab键可以自动补齐)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值