程序加载器和运行时链接器在linux中是一样的吗?
我的意思是ld-linux.so
在程序启动时充当加载器,在调用dlopen()
时充当动态链接器?
答案 0 :(得分:3)
我认为这是非常相关的,但并不完全相同。
我的系统上的/lib/libdl.so
(或/lib/x86_64-linux-gnu/libdl.so.2
)库(包含dlopen
和dlsym
)是一种使用{的一部分的存根或粘合代码或包装器{1}}(或/lib/ld-linux.so.2
)但它不包含相同的符号,您可以使用/lib64/ld-linux-x86-64.so.2
进行检查。
绝对nm -D
和动态加载程序执行非常相似的操作:mmap - 分段和解释重定位顺序。请参阅this link和levine's linkers and loaders book
查看Gnu Libc源代码,如dl-runtime.c等
答案 1 :(得分:1)
程序加载器和运行时链接器在linux中是一样的吗?
是的,他们是。对于每个其他ELF平台也是如此。