程序加载器和运行时链接器在 linux 中是一样的吗?
我的意思是 ld-linux.so
在程序启动时既充当加载器,又在调用 dlopen()
时充当动态链接器?
最佳答案
我认为有很大的相关性,但不完全相同。
/lib/libdl.so
(或我系统上的/lib/x86_64-linux-gnu/libdl.so.2
)库(包含 dlopen
和 dlsym
)是一种使用 /lib/ld-linux.so.2
(或 /lib64/ld-linux-x86-64.so.2
) 但它不包含相同的符号,您可以使用 nm -D
检查。
肯定 dlopen
和动态加载器做的事情非常相似:mmap -ing段和解释搬迁命令。参见 this link和 levine's linkers and loaders book
查看 Gnu Libc 源代码,如 dl-runtime.c等等
关于linux - 程序加载器和运行时链接器是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461443/