GCC链接操作是以section作为最小的处理单元,只要一个section中的某个符号被引用,该section就会被加入到可执行程序中去。因此,GCC在编译时可以使用 -ffunction-sections 和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -Wl,–gc-sections 指示链接...
GCC链接操作是以section作为最小的处理单元,只要一个section中的某个符号被引用,该section就会被加入到可执行程序中去。因此,GCC在编译时可以使用 -ffunction-sections和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -Wl,–gc-sections 指示链接器...
因此,GCC在编译时可以使用 -ffunction-sections和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -Wl,–gc-sections 指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),这样就能减少最终的可执行程序的大小了。
GCC在链接的时候以section为单元处理,所以可以尝试使用-ffunction-sections/-fdata-sections将每个函数或者符号创建成独立的section,然后结合选项-Wl,--gc-sections让链接器忽略用不到的section,这样就可以减少目标可执行程序的大小。其中-Wl表示将后面的参数传递给链接器,所以也可以直接设置链接器选项。 注意这个并不是...
-Wl,--gc-sections: 这是实际传递给链接器的选项,意思是 “Garbage Collect Sections”。链接器会移除所有未被引用或使用的代码段(如函数)和数据段(如变量)。 -Wl,print-memory-usage: 这是是一个链接器选项,用于在链接完成后打印内存使用情况。这对于了解生成的可执行文件或库的内存布局和大小非常有帮助,特别...
指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),链接操作以section作为最小的处理单元(结合-ffunction-sections),只要一个section中有某个符号被引用,该section就会被放入output中。 什么是'被引用',个人认为是指'被调用',或者符号被export引起的链接器认为这是一个接口 -Wa,-...
–gc-sections –gc-sections表示依赖库中不使用的sections将不被链接,可以减小链接目标的大小,一般跟-ffunction-sections一起使用。用法:-Wl,–gc-sections。 –whole-archive –whole-archive用来告诉链接器,将后面库中出现的所有符号都链接进来,这样有一个好处是链接的时候不需要考虑中间文件和库文件的顺序,以保证链...
--gc-sections 链接时,以section为最小处理单元,只有当section中有symbol被使用,才将该section链接到output中 我们在编译选项里面加上 -ffunction-sections -fdata-sections, 然后在链接选项里面加上 -Wl,-gc-sections(但是注意,一旦使用-Wl,-gc-sections将无法使用gdb调试,也无法使用grpof) ...
指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),链接操作以section作为最小的处理单元(结合-ffunction-sections),只要一个section中有某个符号被引用,该section就会被放入output中。 什么是'被引用',个人认为是指'被调用',或者符号被export引起的链接器认为这是一个接口 ...
指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),链接操作以section作为最小的处理单元(结合-ffunction-sections),只要一个section中有某个符号被引用,该section就会被放入output中。 什么是"被引用",个人认为是指"被调用",或者符号被export引起的链接器认为这是一个接口 ...