打印

请教ARM链接之重定向

[复制链接]
1851|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文件不是有伪指令标志程序的入口吗?

使用特权

评论回复
5
frank_ic| | 2010-9-27 10:50 | 只看该作者
Gcc用ld文件,ADS用scatter文件,两者功能相同。 ADS在不用scatter的情况下需在Option和Layout选项中设定起始地址(或标号)和首段段名,链接器会将该段放在可执行文件的最前面。ADS没有这方面的伪指令。

使用特权

评论回复
6
xinzha| | 2010-9-27 20:35 | 只看该作者
ads或者rvds中,在简单工程里,带有ENTRY关键字的地方是作为工程链接的起始点。
ARM自己提供的工具链中,有数种不同的链接模式,详细内容可以去arm的官方网站去下载arm链接器的用户手册和参考手册。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

35

帖子

1

粉丝