2011-06-28 47 views
6

我最近花了很多时间试图修复有问题的ld脚本。 一旦我绘制了(在纸上)所有不同的部分,我就可以找出问题所在。链接器脚本生成器

所以我开始寻找某种LD脚本生成器,但找不到任何! 有没有人知道这样的工具是否存在? 可以导入/导出ld脚本或map-file/elf-file并显示不同的对象/部分和地址的东西?

我知道这里有一些IDE,你不需要担心LD脚本,但我使用的是eclipse,它甚至不提供语法高亮显示!

+0

在Green Hills MULTI工具集中有这样的工具,它是专有的。我还没有在其他地方看到过这样的工具。也就是说,我从来没有发现它对显示或编辑有用。不过,使用readelf将可执行文件的分区边界转储并滚动您自己的图表可能会很快。关于'一些IDE'的提示让我质疑你在链接描述文件中究竟做了什么,但是...... – djs

+0

是的,你上面提出的建议是我实际做的。我想要做的是使这项工作自动(某种图形用户界面)。我的链接器脚本非常复杂,在闪存/内部和外部RAM中有许多不同的部分,因此手动检查链接器脚本的魔力是一项耗时的工作。 – theAlse

回答

2

据我所知,有为了这个目的没有非专有工具。

+0

我会接受这个答案,因为我还没有看到一个工具来做到这一点呢! – theAlse

3

我不知道任何用于LD脚本的所见即所得编辑器,但我可能能够帮助您以图形方式调试这些类型的问题。

我认为这是一个运行时问题,而不是编译时问题。如果是这种情况,那么您可以使用链接器的地图输出来了解发生了什么。

gcc -Wl,-Map=main.map main.c 

映射文件然后可以使用grep解析,或者你可以使用一个graphical viewer的文件来调试问题,段和符号。

您还可以使用纳米获取某个链接的可执行类似的结果:

nm -S --size-sort a.out