搜索
bottom↓
回复: 16

GNU/GCC链接脚本导学(其实你在用,但你也许并没注意到)

[复制链接]

出0入0汤圆

发表于 2007-10-12 16:42:56 | 显示全部楼层 |阅读模式
1. 哪些人可以不需要学GNU-ld链接脚本?

   1)所有事务都交给编译器自动完成的,只需要写代码的
   2)只使用商业性编译器
   3)只使用avr,并且不需要实现复杂功能的

2. 哪些人可以考虑去学GNU-ld链接脚本?

   1)希望比makefile更进一步控制程序的产生
   2)希望在自己需要的存储地址上保存自己指定的数据
   3)希望实现程序在存储空间中的模块化或特殊结构的
   4)希望把不同格式的目标文件链接为一个格式
   5)最重要的一点是:希望用gcc为其他架构的处理器编写程序(而不只是avr),让它在你手中真正成为通用编译器的必要的一步

3. 学习前提:
   1)有winavr的使用经验
   2)有x86汇编基础(要求会的指令不多,有记忆即可,忘了的随时上网搜)

3. 我推荐的学习顺序:
   1)《程序的链接和装入及Linux下动态链接的实现》:http://www-128.ibm.com/developerworks/cn/linux/l-dynlink/
     如果你对编译和链接过程有一定了解,也有反编译库文件、目标文件的经验可以跳过这篇文章

   2)《GNU-ld链接脚本浅析》:http://blog.chinaunix.net/u/13991/showart_177822.html
     建议可以结合winavr的链接脚本来学习,在<winavr安装目录>\avr\lib\ldscripts下,后缀为“.x”的是对应不同架构avr使用的脚本
     也可以看winavr的默认脚本,在命令行下输入“avr-ld --verbose”即可看到。

   3)《Using ld The GNU linker ld version 2》:http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_mono/ld.html
     这是官方的手册,参考。

   有兴趣还可以看看这篇《UNIX/LINUX 平台可执行文件格式分析》(http://www-128.ibm.com/developerworks/cn/linux/l-excutff/)

如果学过arm开发工具ads的网友大概知道“分散加载文件”,现在看来其实它就是一种链接脚本。对于存储地址分配各不相同的arm实现,这是很重要的文件。
我学习gnu的开发软件时间也不长,以上有不当之处,希望大家指出。
另外,感谢IBM、北航的这些文章。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
头像被屏蔽

出0入0汤圆

发表于 2007-10-12 19:18:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-4 12:02:16 | 显示全部楼层
收藏

出0入0汤圆

发表于 2008-8-29 22:55:27 | 显示全部楼层
不错, 用的上了, 谢谢。

出0入0汤圆

发表于 2008-8-30 08:29:48 | 显示全部楼层
很好的总结。

出0入0汤圆

发表于 2008-8-30 08:33:53 | 显示全部楼层
Thanks very much

出0入0汤圆

发表于 2008-8-30 09:42:21 | 显示全部楼层
好物,顶,当时看GCC的帮助文档看的有点玄

这 ld stript 绝对是好物。

出0入0汤圆

发表于 2009-1-5 23:06:04 | 显示全部楼层
把其中两篇重要的文档压成PDF了,在这里!

出0入0汤圆

发表于 2009-1-5 19:56:16 | 显示全部楼层
来做个记号

出0入0汤圆

发表于 2009-1-5 13:18:28 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2009-1-5 12:18:43 | 显示全部楼层
晕,早没找到&nbsp;看来挖墓还是有用的..
最近再整ARM的GCC&nbsp;搞得头大

出0入0汤圆

发表于 2009-1-5 11:34:52 | 显示全部楼层
不错,顶了

出0入0汤圆

发表于 2009-1-5 11:32:19 | 显示全部楼层
连接脚本是好东西,可以很自由的分配段。
比ads的分散连接好用多了。

出0入0汤圆

发表于 2009-1-5 11:24:29 | 显示全部楼层
最近还准备发表一篇像这样的文章的呢。有ld&nbsp;script可以更好的进行编译,如把某个函数生成以什么地址开的地方……

出0入0汤圆

发表于 2009-1-5 11:14:00 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-4-26 20:43:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-12-31 15:53:25 | 显示全部楼层
谢谢。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 22:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表