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

时间:2011-12-11 02:10:13

标签: linux gcc linker

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

2 个答案:

答案 0 :(得分:3)

我认为这是非常相关的,但并不完全相同。

我的系统上的/lib/libdl.so(或/lib/x86_64-linux-gnu/libdl.so.2)库(包含dlopendlsym)是一种使用{的一部分的存根或粘合代码或包装器{1}}(或/lib/ld-linux.so.2)但它不包含相同的符号,您可以使用/lib64/ld-linux-x86-64.so.2进行检查。

绝对nm -D和动态加载程序执行非常相似的操作:mmap - 分段和解释重定位顺序。请参阅this linklevine's linkers and loaders book

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

答案 1 :(得分:1)

  

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

是的,他们是。对于每个其他ELF平台也是如此。