举个例子:
在CMD文件中如下配置
SECTIONS
{
init : load > mem
const :load > mem
text:load > mem
data:load > mem
bss:load > mem
…….
}
但是编译后,map文件中,const段却在bss段后面,也就是说链接顺序并没有按照CMD中的顺序,我不希望指定地址来指定链接顺序,有什么方法能够解决我的问题不
谢谢!
Tony Tang:
linker根据cmd文件按照自己的算法规则安排在同一memory块里的段,主要原则是减少内存空洞hole,所以上面SECTION里的段都是放在同一mem里,其先后顺序是由linker的算法来决定的。
如果希望将不同的段放到指定的地方,除了上面的你提供的固定地址的方法,还可以在MEMORY里将MEM分成不同的块,再在SECTION里分配置到不同的MEM块。
其实在同一个MEMORY块里,各段的放置顺序对程序的执行没有影响。