互联网科技嵌入式编程

编译链接的最小单元

2020-05-01  本文已影响0人  罗蓁蓁

本文讲讲编译链接的一些小常识!

编译最小单元

我们在开发过程中,需要把程序员写的源码,编译成机器可识别的机器码。这会经历编辑源代码->预处理->编译->链接的开发过程。

我们需要知道编译的最小单元是什么?很简单,一个源码会生成一个目标文件。因此,一个源文件就是一个编译最小单元。但是,这个源文件必须是:经过预处理过后的源文件,这很重要。

链接最小单元

编译完成以后,需要进行链接。

那么我们链接的最小单元是什么呢?答案是:通常情况下是一个目标文件。因此,只要我们用到了目标文件中的一个接口函数,那么该目标文件的所有内容最后都会放到可执行程序中去。这可能会让程序相对较大。

因此,我们可以在编译时加上参数:-ffunction-sections -fdata-sections,以及O2二级优化,然后全部重新编译一遍。用于链接的最小单元是接口,而不是文件。然后在链接生成out文件的那里,加上链接参数--gc-sections。目的是让生成的可执行文件尽可能小点。

但这样做,则必须得非常小心,且对源码非常熟悉,不然很可能会出现想使用的接口是未定义引用的情况。

出差必备

买火车票、高铁票、机票,订酒店都打9折的出行工具TRIP,点击注册

上一篇下一篇

猜你喜欢

热点阅读