因此,GCC在编译时可以使用 -ffunction-sections 和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -Wl,–gc-sections 指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),这样就能减少最终的可执行程序的大小了...
GCC链接操作是以section作为最小的处理单元,只要一个section中的某个符号被引用,该section就会被加入到可执行程序中去。因此,GCC在编译时可以使用 -ffunction-sections 和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -gc-sections 指示链接器去掉...
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名保持一致。而在链接阶段, -gc-sections 指示链接器去掉...
-fdata-sections 以及 -ffunction-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。即使compiler为每个function和data item分配独立的section -Wl,–gc-sections(为何导致符号的缺失?) 指示链接器去掉不用的section(其中-wl, 表示后面的参数 -gc-sections 传递给链接器),链接...
节(Sections) 文件的实际数据部分,可以包含代码、数据、符号表、重定位信息等。常见的节类型: .text:包含程序的执行代码。 .data:包含程序中的初始化全局变量和静态变量。 .bss:用于未初始化的全局变量和静态变量。 .rodata:包含只读数据,如字符串常量等。 .symtab:包含一个符号表,用于链接和调试。 .strtab:包含...
编译选项对文件大小有着直接且显著的影响。例如,通过添加-fvisibility=hidden,可以隐藏不需要公开的符号,有效减少文件大小。同样,使用-fdata-sections和-ffunction-sections指令,可以分别控制数据和函数节的生成,有助于优化内存布局。在移除无用代码方面,-flto(链接时间优化)是一个重要的选项。它在链接...
*.o查看所有中间⽂件的⼤⼩。也可以使⽤nm⼯具 arm-none-eabi-nm -t d -S --size-sort Application.elf 使⽤-ffunction-sections -fdata-sections作为编译参数和-Wl,--gc-sections作为链接器参数也很有⽤,因此它将从⼆进制⽂件中删除所有未使⽤的函数和数据。
data-deps -fcombine-stack-adjustments -fconserve-stack -fcompare-elim -fcprop-registers -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fcx-fortran-rules -fcx-limited-range -fdata-sections -fdce -fdelayed-branch -fdelete-null-pointer-checks -fdevirtualize -fdse -fearly-inlining -fipa-...
fdata-sections Common Var(flag_data_sections) Place data items into their own section. fdbg-cnt-list Common Var(flag_dbg_cnt_list) List all available debugging counters with their limits and counts. fdbg-cnt= Common RejectNegative Joined Var(common_deferred_options) Defer -fdbg-...