- 主题:关于动态库加载的一些疑问
动态库的代码都是位置无关的吗?
是什么程序负责加载动态库(mmap)的,内核还是应用加载器?
应用程序怎么知道动态库的地址的?这个地址是连接是确定,还是加载时确定?
--
FROM 45.78.4.*
谢谢。
动态库,.so文件不是通过mmap映射到某个内存中的吗,我是问这个过程是loader在应用中调用mmap做,还是内核直接做了。
你的意思,foo@PLT这个PLT是TEXT代码段的一部分,动态库地址映射好后,loader再去修改每个PLT地址?
【 在 BigCarrot 的大作中提到: 】
: 是的
: 你对加载的准确定义?
: 一般情况下应用程序是通过函数调用 foo@PLT 这样的方式来使用动态库的
: ...................
--
FROM 45.78.4.*
但是有些系统出于安全的考虑,TXT内存区是设为只读的,这种怎么搞的?
另外,loader功能是包含在在exec这类函数里面,还是单独的应用程序?
【 在 BigCarrot 的大作中提到: 】
: 把文件映射到内存中当然是要内核做了
: loader的作用不就是计算各种地址,填写各种表吗
: 你以为loader是干什么的?
: ...................
--
修改:wjhtingerx FROM 45.78.4.*
FROM 45.78.4.*