2013-11-20 7 views
0

На платформе linux,Где находится динамическая библиотека в памяти?

Может ли кто-нибудь сказать мне, где находится динамическая библиотека в памяти?

я узнал, что динамическая библиотека являются MMAP к процессу в соответствии с GOT этого процесса,

это правда?

Спасибо!

+0

Этот вопрос очень похож: http://stackoverflow.com/questions/5130654/when-how-does-linux-load-shared-libraries-into-address-space Посмотрите на него и посмотрите, отвечает ли он ваш вопрос. – LucienK

+0

Это место, где динамический загрузчик решил поместить его, что может быть различным для каждого процесса. – twalberg

ответ

1

Вы можете увидеть, где вещи были отображены в процессе Linux, просмотрев/proc/pid/maps - все, что вам нужно знать, это идентификатор процесса. Например:

$ cat /proc/self/maps 
00400000-0040b000 r-xp 00000000 08:01 71827604       /bin/cat 
0060a000-0060b000 r--p 0000a000 08:01 71827604       /bin/cat 
0060b000-0060c000 rw-p 0000b000 08:01 71827604       /bin/cat 
00690000-006b1000 rw-p 00000000 00:00 0         [heap] 
7f07fbaf7000-7f07fbdc0000 r--p 00000000 08:01 18094104     /usr/lib/locale/locale-archive 
7f07fbdc0000-7f07fbf75000 r-xp 00000000 08:01 14552996     /lib/x86_64-linux-gnu/libc-2.15.so 
7f07fbf75000-7f07fc175000 ---p 001b5000 08:01 14552996     /lib/x86_64-linux-gnu/libc-2.15.so 
7f07fc175000-7f07fc179000 r--p 001b5000 08:01 14552996     /lib/x86_64-linux-gnu/libc-2.15.so 
7f07fc179000-7f07fc17b000 rw-p 001b9000 08:01 14552996     /lib/x86_64-linux-gnu/libc-2.15.so 
7f07fc17b000-7f07fc180000 rw-p 00000000 00:00 0 
7f07fc180000-7f07fc1a2000 r-xp 00000000 08:01 14553008     /lib/x86_64-linux-gnu/ld-2.15.so 
7f07fc37e000-7f07fc381000 rw-p 00000000 00:00 0 
7f07fc3a0000-7f07fc3a2000 rw-p 00000000 00:00 0 
7f07fc3a2000-7f07fc3a3000 r--p 00022000 08:01 14553008     /lib/x86_64-linux-gnu/ld-2.15.so 
7f07fc3a3000-7f07fc3a5000 rw-p 00023000 08:01 14553008     /lib/x86_64-linux-gnu/ld-2.15.so 
7fff90e28000-7fff90e49000 rw-p 00000000 00:00 0       [stack] 
7fff90f1f000-7fff90f20000 r-xp 00000000 00:00 0       [vdso] 
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0     [vsyscall] 

показывает все, что получил отображенный, чтобы запустить программу cat.

+0

Спасибо, Крис! – computereasy

Смежные вопросы