GCC(Arm架构)链接器中如何将LTO段映射到输出段?
解决方法很简单,直接在现有.text输出段的匹配规则中增加.gnu.lto前缀的通配符匹配规则即可,修改后的链接脚本段定义如下:
.text : { . = ALIGN(4); *(.text*) *(.rodata*) *(.gnu.lto*) } > FLASH
通配符*(.gnu.lto*)可以匹配所有格式为.gnu.lto<SOMETHING>的输入段,会将这些LTO生成的段全部收纳到.text输出段中,最终写入你定义的FLASH存储块。
如果你需要严格区分代码段和只读数据段的话,也可以拆分匹配规则,保持段属性的严格对应,适合对内存布局要求严格的场景:
.text : { . = ALIGN(4); *(.text*) *(.gnu.lto_.text*) } > FLASH .rodata : { . = ALIGN(4); *(.rodata*) *(.gnu.lto_.rodata*) } > FLASH
内容的提问来源于stack exchange,提问作者jgreen81
相关产品推荐
相关产品推荐

