linux - 程序加载器和运行时链接器是一样的吗?

标签 linux gcc linker

程序加载器和运行时链接器在 linux 中是一样的吗? 我的意思是 ld-linux.so 在程序启动时既充当加载器,又在调用 dlopen() 时充当动态链接器?

最佳答案

我认为有很大的相关性,但不完全相同。

/lib/libdl.so(或我系统上的/lib/x86_64-linux-gnu/libdl.so.2)库(包含 dlopendlsym)是一种使用 /lib/ld-linux.so.2(或 /lib64/ld-linux-x86-64.so.2) 但它不包含相同的符号,您可以使用 nm -D 检查。

肯定 dlopen 和动态加载器做的事情非常相似:mmap -ing段和解释搬迁命令。参见 this linklevine's linkers and loaders book

查看 Gnu Libc 源代码,如 dl-runtime.c等等

关于linux - 程序加载器和运行时链接器是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461443/

相关文章:

linux - 如何在GCC 4.6.3版本中强制内联函数?

linux - GIT 未在替代用户下运行 -/bin/git :/bin/git: cannot execute binary file

python - 针对 Windows 计算机使用 impacket 的 SMB 客户端时“无法请求 session ”

c - 对带有 -Wl,--wrap 的包装函数的 undefined reference

c++ - 非常量复制构造函数和返回值的隐式转换

c++ - 在 ARM 架构上构建时,使用 boost 的动态库具有 undefined reference

objective-c - 将代码从 ios 移植到 osx 项目时出错

c - 两个程序链接到动态链接库

c++ - 用于用户输入的 Linux C++ gdb 命令

linux - SSH 代理转发特定 key 而不是所有已注册的 ssh key