`
isiqi
  • 浏览: 16041004 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ld链接器

阅读更多

ld链接器其实是一个共享对象,但是也可以执行运行它。可见ELF可执行文件和共享对象本质没有差别。其实dll和exe文件也是如此。Windows的工具rundll32.exe可以执行dll文件。

其实系统执行execve()函数加载ELF文件并不关心是动态连接库还是可执行文件。系统将控制权交给e_entry。如果是没有.interp,则是elf文件的e_entry;如果有则是动态链接器的e_entry。因此动态链接器、可执行文件和普通的库文件都是类似的。

/lib/ld-linux.so.2 是实际的ld软链接的文件。

ELF的ld是glibc的一部分。代码位于glibc的源文件的elf目录下。其入口地址在 sysdeps/i386/dl-machine.h中的_start,普通程序的是sysdeps/i386/elf/start.S中的_start()。

_start()调用dl_start对ld进行自举(自己进行符号重定位),经过一些平台相关处理后,进入_dl_main这个ld的真正主函数。_dl_main判断调用入口地址是否是链接器本身的,以判断是否是当作可执行文件使用。如果入口函数不是本身,说明是要运行其他可执行文件,ld只是进行一些加载模块的工作的,其将会进行加载依赖模块的工作。

ld本身是静态链接的,因为没有其他可以帮他解决动态链接重定位问题,它必须是不依赖其他模块的。ldd /lib/ld-linux,so,2可以查看到。

ld-linux.so.2是fpic的,当然,是不是fPIC不是ld的关键。只是采用fpic更方便、简单。

ld.so的装载地址与普通的so没有区别,都是0x0000000,这个是无效的地址,内核会为它装载时选择一个合适的地址。

分享到:
评论

相关推荐

    ld 使用 简介

    本人讲解了Ld连接器如何使用

    ld命令 GUN连接器

    ld命令是GNU的连接器,将目标文件连接为可执行程序。 很少单独使用ld命令对目标进行连接操作,通常都是使用gcc命令在编译后自动进行连接。 语法格式: ld [参数] 常用参数: -o 指定输出文件名 -e 指定程序的...

    ld中文手册

    ld是连接程序的工具,好多诡异的错误就是因为编译而引起。所以有必要掌握ld的相关知识,欢迎下载

    GUN编译器和连接器

    本文档介绍 GNU 连接器 ld 的 2.14 版本. 本文档在 GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本 证的一份拷贝.

    using ld简体.pdf

    本文档介绍GNU连接器 LD的使用,各个选项的含义中文版

    GUN ld中文使用手册

    使用ld ******** 本文档介绍GNU 连接器ld 的2.14 版本. 本文档在GNU 自由文档许可证下发行.在"GNU 自由文档许可证"一章中有关于本 许可证的一份拷贝.

    基于STM32 的 LD3320基本驱动程序

    该驱动程序可以在STM32微控制器上运行,通过与LD3320芯片的通信来实现语音识别功能。该驱动程序包括初始化LD3320芯片、设置识别模式、处理语音输入和输出等功能。通过使用该驱动程序,您可以轻松地将LD3320芯片与STM...

    ld.rar_ld

    主要讲述LD联接器的原理,这对理解linux程序的连接有很关的帮助

    LD6910通讯转换模块_安装使用说明书V1.0

    连接 LD128E/EN 系列火灾报警控制器与 CRT、PC 等主设备;LD6910 作为从设备,CAN 接口接收 控制器发送过来的火警、故障、监管等信息;同时以功能码为 4 的 MODBUS RTU 协议方式回应主设备 的信息请求。

    bin86_as86_ld86

    bin86包含as86编译器和ld86连接器

    using GNU ld

    using ld. GNU 连接器使用说明。

    基于LD3320的语音识别车配虚拟人系统的设计.pdf

    本设计运用单片机, 结合语音识别芯片LD3320, 利用语音输入完成控制信号输入, 通过语音、数码管、继电器和传感器的反馈完成输出。该设计的语音命令平均正确识别率可达90 %。在智能汽车领域, 性能良好且成本低康的语音...

    ld中文手册完全版(带目录).pdf

    ld 把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用. 一般,在编译一个程序时,最后一步就是运行ld . ld 能接受连接命令语言文件,这是一种用AT&T 的连接编辑命令语言的超集写成的文件,用来在...

    uboot链接脚本

    连接器有个默认的内置连接脚本, 可用ld --verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?). -T选项用以指定自己的链接脚本, 它将代替默认的连接脚本。你也可以使用<暗含的连接脚本>以增加自定义的...

    gcc链接脚本详解.pdf

    本文详细的描述了GCC连接器连接脚本的基本编写规则,以及提供了居多的例子以供可以更好的理解学习。希望可以帮助到大家

    用声音去沟通——非特定人语音识别LD3320模块(原理图、示例程序、调试及技术文档等) -电路方案

    LD3320与Arduino实物连接图: 相关链接:LD3320 在Arduino上的应用 LD3320模块主要技术参数内置单声道mono 16-bit A/D 模数转换 内置双声道stereo 16-bit D/A 数模转换 内置 20mW 双声道耳机放大器输出 内置 550mW 单...

    bin86的rpm安装包

    bin86包含as86编译器和ld86连接器

    GLD中文手册.doc

    本文档介绍GNU连接器ld的2.14版本.

    trailpack-jsonld:JSON-LD Trailpack。 连接和整理数据

    目前,它只是一个包装器,但是在很短的时间内,它将表示json-ld调用安装用哟: npm install -g yo generator-trailsyo trails:trailpack trailpack-jsonld 使用npm(您将必须手动创建配置文件): npm install --...

    binutils-2.14.tar.gz完整版

    Binutils 是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。 安装下列程序: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings 和 strip 安装...

Global site tag (gtag.js) - Google Analytics