当前位置: 首页 > 面试题库 >

链接时如何为节指定基地址,或者链接后如何为节重新设置基址?

卢勇
2023-03-14
问题内容

符号可以在一定的地址链接defsym如图所示这里。我的问题是,是否可以对部分进行相同的处理?也就是说,给定一些.o目标文件,是否可以指定节将被重定位到的基址?

或者,是否可以在最终链接之后重新设置部分的基础?也就是说,要更改二进制文件中某个节的地址,并使所有受重定位影响的信息(如该节中的相对分支等)都可以正确地重定位。

如果我的问题不清楚,我可以对其进行编辑并添加图像以更好地解释。


问题答案:

从您参考的问题和Linux标签来看,我将假设您正在使用GNU ld

对于GNU的简短回答ld是,可以将部分放在特定的地址。

更长的答案是您需要创建一个自定义链接脚本来执行此操作,可以将其指定为-T ld。如果您要gcc用作的包装器ld,则需要通过gcc
-Wl,选项将链接器传递给它。

链接描述文件必须包含如下内容:

SECTIONS {
   .text 0x08049000 :
       {
       foo.o (.text)
       bar.o (.text)
       }
}

不过,需要注意的是-
T选项替代了ld使用的默认链接描述文件。您可能需要修改默认的链接描述文件以执行所需的操作。可以通过将--verbose选项传递给ld而不使用其他任何选项来转储默认的链接描述文件。

LD手册中提供了有关链接描述文件的更多信息。



 类似资料:
  • 我有一个非常简单的节点结构,用于实现迭代深化DFS。然而,我后来在将子节点链接到父节点时遇到了麻烦。 后来在我的代码中,当我试图做这样的事情时,我会遇到严重的错误: 我只想将这个子节点(称为Down_节点)链接到它的父节点(称为Next)。但如果Next本身不是一个节点,我该怎么做呢? 正是指向下一步的指针带来了麻烦。我试过了 编辑:当我尝试使用 在/usr/lib/gcc/x86_64-redh

  • 问个css问题。如下图所示:人才信息 就是当前页面的a链接css不一样 我看了一个他的源代码: 就是当首页面的a链接 是被选中的 class="select" 其它的链接是: class="unselect" 我是用django做后端,前端 如果根据cate.slug 来判断的话。那有多少个分类就要写多少个if语句了 不知道有什么更简单的功能来实现这个问题? 多谢各位

  • 我有以下HTML+js代码: 您能解释一下如何重构以下代码,在单击href code后执行,但#不添加到URL并且页面不应该重新加载的代码吗?

  • 问题内容: 我有以下问题…我想在单击普通链接时设置会话变量,例如: 我的研究似乎指出,PHP无法以设置会话变量的方式赶上click事件。 我相信使用Ajax是可能的,但是如何呢?我的链接看起来像什么? 设置会话变量应如下所示: 简而言之:单击HTML中的链接时,必须设置会话变量。 我该怎么做? PS:我对Ajax不太熟悉,但是我会赶上。 编辑:链接将指向同一页面,我也想避免类似“ home.php

  • 以下是托管Web服务器的机器的ipconfig输出: 以太网适配器局域网连接: 特定于连接的DNS后缀:链接本地IPv6地址…:fe80::f85b:4256:ee76:24a4∗IPv4地址………:10.213.254.119子网掩码………:255.255.255.0默认网关……:10.213.254.252 我可以使用以下方式访问该网站:http://10.213.254.119/test“现

  • 问题内容: 后续问题应用程序在运行时如何解析为共享库的不同版本?,我想知道如何在链接命令行上指定要使用哪个版本的库? 假设我有 指定库与可执行文件链接的通常方法不会显示要使用的版本。此外,很可能要链接到最新版本。因此,通常的线路在大多数情况下都可以正常工作。 使用该库的版本1 进行链接的命令行是什么? 问题答案: 链接器也可以接受文件名 来自: -l namespec --library = na