linux – 如何在链接时为节指定基本地址,或者如何在链接后为节更
发布时间:2020-12-13 23:02:39 所属栏目:Linux 来源:网络整理
导读:如图所示,符号可以在某些地址与defsym链接.我的问题是,是否可以使用部分进行相同的操作?也就是说,给定一些.o目标文件,是否可以指定部分将重定位到的基址? 或者,是否可以在最后一个链接之后重新定义一个部分?也就是说,要更改二进制文件中的一个部分的地址,
如图所示,符号可以在某些地址与defsym链接.我的问题是,是否可以使用部分进行相同的操作?也就是说,给定一些.o目标文件,是否可以指定部分将重定位到的基址?
或者,是否可以在最后一个链接之后重新定义一个部分?也就是说,要更改二进制文件中的一个部分的地址,并使所有受重定位影响的信息(例如该部分之外的相对分支等)正确地重新定位. 如果我的问题不明确,我可以编辑它并添加图像以便更好地解释. 解决方法
从您引用的问题和
Linux的标记来判断,我将假设您正在使用GNU ld.
GNU ld的简短答案是肯定的,部分可以放在特定的地址. 更长的答案是您需要创建一个自定义链接描述文件来执行该操作,可以为ld指定-T.如果您使用gcc作为ld的包装器,则需要通过gcc -Wl选项将链接器传递给它. 链接器脚本必须包含以下内容: SECTIONS { .text 0x08049000 : { foo.o (.text) bar.o (.text) } } 值得注意的是-T选项取代了ld使用的默认链接描述文件.您可能希望修改默认链接描述文件以执行所需操作.可以通过将–verbose选项传递给ld而不使用任何其他选项来转储默认链接描述文件. 有关链接描述文件的更多信息,请参见LD Manual. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读