我正在尝试使用链接描述文件(LD)将我的代码拆分为2个不同的MEMORY区域。 即 - 所有代码都应该转到MEM1区域。并且只有file2.o应该进入MEM2区域。
MEMORY
{
MEM1 : ORIGIN = 0x00000000, LENGTH = 100K
MEM2 : ORIGIN = 0x00800000, LENGTH = 100K
}
SECTIONS
{
.text : { *(.text .text.*) } >MEM1
}
如何将file2.o排除在MEM1之外并将其指向MEM2? 我尝试过使用EXCLUDE_FILE(对于file2.o和MEM1区域)没有成功。
任何帮助/指示都会有所帮助
感谢
答案 0 :(得分:0)
来自LD手册,3.6.4.2 Input Section Wildcard Patterns:
如果文件名与多个通配符模式匹配,或者文件名显式出现并且也与通配符模式匹配,则链接器将使用链接描述文件中的第一个匹配。 / p>
你尝试过这样的事吗?
.text2 : { file2.o(.text .text.*) } >MEM2
.text : { *(.text .text.*) } >MEM1
然而,这也应该有效:
.text : { *(EXCLUDE_FILE(*file2.o) .text .text.*) } >MEM1
.text2 : { file2.o(.text .text.*) } >MEM2