Linux C符号的重定位信息?

Linux C符号的重定位信息?,第1张

当编译器生成一个目标文件后,其并不知道代码和变量最终的存储位置,也不知道定义在其他文件中的外部符号。因此编译器会生成一个重定位表目,里面存储着关于每一个符号的信息。这个表目告知链接器在合并目标文件时应该如何修改每个目标文件中对符号的引用。这种重定位表目存储在.rel.text 段中和.rel.data 段中。该表目可以理解为一个结构体,其中存储着每一个符号的重定位信息。

offset表示该符号在存储的段中的偏移值。symbol 代表该符号的名称,字符串实际存储在.strtab 段中,这里存储的是该字符串首地址的下标。type表示重定位类型,链接器只关心两种类型,一种是与PC相关的重定位引用,另一种是绝对地址引用。PC相关的重定位引用表示将当前的PC值(这个值通常是下一条指令的存储位置)加上该符号的偏移值。绝对地址引用表示将当前指令中已经指定的地址引用直接作为跳转的地址,不需要进行任何修改。有了这些信息,链接器就可以将符号在存储段中的偏移值加上该段在重定位后该段的新地址,这样就得到了一个新的引用地址,而这个引用地址就是该符号的最终地址。同样,在程序所有引用该地址的部分都要作修改,使用这个新的绝对地址代替旧的偏移地址。当新的符号地址被修改完毕之后,链接器的工作就结束了。

xserver 本身就支持远程运行,而且 X server 也支持远程登录而且根本不影响当前用户的环境。

这是服务器系统的根本功能。要不然一个计算机就一个显示器,N 个人登录只能排队?

貌似装个 VNC 就直接能实现。X server 我记得有两种远程图形界面显示,一种是服务器本地渲染后发送图像信息,但性能你肯定知道的。还一种就是本地不渲染,只运行,渲染在客户端进行,这样速度快,但似乎软件环境要求高一些。

这样是单独一个登录 session ,所有的程序都在这个会话里面,和别人的运行状况没关系。

具体怎么搞我就不知道了。没用过这个功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7582427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存