编译链接的最小单元

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

编译最小单元

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

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

链接最小单元

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

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

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

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

出差必备

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容