请教ARM链接之重定向

[复制链接]
2932|5
 楼主| sgx17 发表于 2010-9-21 09:30 | 显示全部楼层 |阅读模式
源代码经过编译过生成目标文件,默认都是从0地址开始的,假如我有多个源文件同时编译,那ld链接怎么知道哪个目标文件应该在前,哪个又在后面呢?谢谢
kkjiongquan 发表于 2010-9-21 11:12 | 显示全部楼层
那就需要.ld文件对输出段进行排列,我编译连接ecos的时候用的就是这。编译链接的时候用上这.ld文件。这方面的知识可以很深入,你可以看看GCC的编译原理。要不然你很难完全明白
 楼主| sgx17 发表于 2010-9-21 11:55 | 显示全部楼层
那就需要.ld文件对输出段进行排列,我编译连接ecos的时候用的就是这。编译链接的时候用上这.ld文件。这方面的知识可以很深入,你可以看看GCC的编译原理。要不然你很难完全明白 ...
kkjiongquan 发表于 2010-9-21 11:12


呵呵,谢谢,有这方面的书籍吗?
还有不用.ld文件或是scatter文件的时候,为什么会从.s这个源文件开始执行,而不是.c的入口函数main呢
kkjiongquan 发表于 2010-9-21 21:33 | 显示全部楼层
我也想找这方面嘅书,我都是上网找资料的。.s文件不是有伪指令标志程序的入口吗?
frank_ic 发表于 2010-9-27 10:50 | 显示全部楼层
Gcc用ld文件,ADS用scatter文件,两者功能相同。 ADS在不用scatter的情况下需在Option和Layout选项中设定起始地址(或标号)和首段段名,链接器会将该段放在可执行文件的最前面。ADS没有这方面的伪指令。
xinzha 发表于 2010-9-27 20:35 | 显示全部楼层
ads或者rvds中,在简单工程里,带有ENTRY关键字的地方是作为工程链接的起始点。
ARM自己提供的工具链中,有数种不同的链接模式,详细内容可以去arm的官方网站去下载arm链接器的用户手册和参考手册。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

35

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部