GCC编译时你需要知道的那些事儿

学习Linux的,尤其是学习嵌入式Linux的,对GCC比较熟悉。当然我记录的都是自己的一些笔记,所以都是很基础的东西。

那我们来说说GCC的一些事情吧。

首先我们知道GCC就是一个编译器,我们写一个程序出来,这个程序我们称之为源代码。但是这个源代码,计算机是无法识别的。这就需要gcc编译成计算机可以执行的可执行文件。

对于这样一个的一个过程需要进行着四个关联的步骤:

预处理:

机器只能执行二进制的代码,在形成二进制代码之前的那个过程,我们就称之为预处理。典型地,由预处理器(preprocessor) 对程序源代码文本进行处理,得到的结果再由编译器核心进一步编译。

这个过程中,对源代码文件中的文件包含(include),预编译语句(如宏定义define等)进行分析

编译:这个过程其实就是生成以.o为后缀的目标文件的过程。

汇编:汇编过程是针对的汇编语言的步骤,调用as进行工作,也是生成以.o为后缀的目标文件

链接:上述的两步都是形成了.o文件,这个部分就是很重要的链接阶段,就是将所有的目标文件安排在可执行程序中恰当的位置。同时该程序所调用到的库函数也从各自所在的库中连接到合适的地方来。

分割线------------------------------------------------------------------------GCC内部实现的机制-------------------------------------------------------------------------------------------------------

这个地方我们就来说说常用的GCC选项有哪些?

首先我们按照上述的四个步骤依次来实现一下:

上面简单的说了从源文件到可执行文件生成的整个过程。

还有哪些是我们常用的呢?

1)-I gcc在链接库时,标准头文件路径在/usr/include下,对于自定义文件的使用,可以放进此目录下,也可以使用-I 指定其目录。

2)-Ldir 制定编译时,搜索库的路径

3)-static 静态链接

区分下静态链接与动态链接的区别:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值