因此,GCC在编译时可以使用 -ffunction-sections和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -Wl,–gc-sections 指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),这样就能减少最终的可执行程序的大小了。
gcc -ffunction-sections参数 `gcc-ffunction-sections`是GCC编译器的一个参数,用于将每个函数放置在单独的代码段中。这个参数的作用是优化代码的大小,因为它允许链接器在链接时丢弃未被调用的函数,从而减小生成的可执行文件的大小。这对于嵌入式系统或者资源受限的环境中非常有用。
1 编译选项说明 -ffunction-sections: 这个选项告诉编译器将每个函数放在单独的一个 section(段)中,而不是将所有函数放在同一个代码段中。 好处是结合链接器选项--gc-sections使用时,可以去掉未被使用的函数,从而减小最终生成的可执行文件的大小。 -fdata-sections: 类似于-ffunction-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 传递给链接器),这样就能减少最终的可执行程序的大小了...
-ffunction-sections -fdata-sections 如果目标支持任意部分,请将每个函数或数据项放入输出文件中自己的部分中。 函数的名称或数据项的名称决定了输出文件中的节的名称。 在链接器可以执行优化以提高指令空间中引用局部性的系统上使用这些选项。 大多数使用 ELF 对象格式和运行 Solaris 2 的 SPARC 处理器的系统都具有...
GCC在链接的时候以section为单元处理,所以可以尝试使用-ffunction-sections/-fdata-sections将每个函数或者符号创建成独立的section,然后结合选项-Wl,--gc-sections让链接器忽略用不到的section,这样就可以减少目标可执行程序的大小。其中-Wl表示将后面的参数传递给链接器,所以也可以直接设置链接器选项。
–gc-sections –gc-sections表示依赖库中不使用的sections将不被链接,可以减小链接目标的大小,一般跟-ffunction-sections一起使用。用法:-Wl,–gc-sections。 –whole-archive –whole-archive用来告诉链接器,将后面库中出现的所有符号都链接进来,这样有一个好处是链接的时候不需要考虑中间文件和库文件的顺序,以保证链...
指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),链接操作以section作为最小的处理单元(结合-ffunction-sections),只要一个section中有某个符号被引用,该section就会被放入output中。 什么是"被引用",个人认为是指"被调用",或者符号被export引起的链接器认为这是一个接口 ...
-ffunction-sections:将函数代码放入单独的段中。 -fdata-sections:将数据放入单独的段中。 -rdynamic:使动态链接器能够解析符号表中的所有符号。 这些参数可以根据需要进行组合使用,以控制GCC编译器的行为。在使用GCC命令时,可以通过-h或--help选项查看所有可用参数及其用法。 0 赞 0 踩最新...