编译链接的最小单元

作者: 罗蓁蓁 | 来源:发表于2020-05-01 12:32 被阅读0次

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

    编译最小单元

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

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

    链接最小单元

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

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

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

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

    出差必备

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

    相关文章

      网友评论

        本文标题:编译链接的最小单元

        本文链接:https://www.haomeiwen.com/subject/awafghtx.html