ldd问题
ldd一个可执行程序得到的 依赖共享库后面的地址 是 进程空间里加载这些共享库的地址吗?
linux 32位 radhat 4u4
编译一个简单的hello world的c程序,ldd它的可执行文件,
libc.so.6 => /lib/tls/libc.so.6 (0x00318000)
freebsd 64位(手头上没32位的bsd机器)
ldd同样的一个可执行程序
libc.so.6 => /lib/libc.so.6 (0x800633000)
按照“深入理解计算机系统”第十章的描述
进程空间的共享内存是存放是从0x40000000开始的
0x800633000感觉有点偏得太多了
而0x00318000更是处于0x08048000(代码段起始位置)以前的禁用空间
我的感觉是“深入理解计算机系统”说的是一种概念,具体各个系统的实现都会有所不同
比如linux64位的话,libc.so.6 => /lib64/tls/libc.so.6 (0x0000003e26800000)
不知道我这样想对不对?