2010-02-07 7 views
9

Я использую ldd, чтобы показать динамическую библиотеку на Fedora/x86, и она показывает разные результаты каждый раз, когда она используется.ldd показывает разные адреса на x86 Linux

Ожидаемое? Или есть объяснение?

Я помню, что он показывает фиксированный результат на PPC/Linux.

`ldd /bin/ls 
linux-gate.so.1 => (0x00e5b000) 
librt.so.1 => /lib/librt.so.1 (0x00c0c000) 
libselinux.so.1 => /lib/libselinux.so.1 (0x0095d000) 
libcap.so.2 => /lib/libcap.so.2 (0x00110000) 
libacl.so.1 => /lib/libacl.so.1 (0x00331000) 
libc.so.6 => /lib/libc.so.6 (0x00115000) 
libpthread.so.0 => /lib/libpthread.so.0 (0x00bc9000) 
/lib/ld-linux.so.2 (0x009d2000) 
libdl.so.2 => /lib/libdl.so.2 (0x00680000) 
libattr.so.1 => /lib/libattr.so.1 (0x00447000) 
ldd /bin/ls 
linux-gate.so.1 => (0x00f76000) 
librt.so.1 => /lib/librt.so.1 (0x00494000) 
libselinux.so.1 => /lib/libselinux.so.1 (0x0095d000) 
libcap.so.2 => /lib/libcap.so.2 (0x009e9000) 
libacl.so.1 => /lib/libacl.so.1 (0x00365000) 
libc.so.6 => /lib/libc.so.6 (0x00732000) 
libpthread.so.0 => /lib/libpthread.so.0 (0x00b61000) 
/lib/ld-linux.so.2 (0x002a7000) 
libdl.so.2 => /lib/libdl.so.2 (0x002f0000) 
libattr.so.1 => /lib/libattr.so.1 (0x00447000)` 

ответ

14

Fedora использует address space randomization как часть своих различных мер безопасности. ldd работает, фактически загружая совместно используемые объекты и показывая, где они заканчиваются. Объединение этих двух результатов приводит к данным наблюдениям.

+0

thx! вот что я искал! – tristan

+0

@Tristan: Пожалуйста, отметьте этот ответ как принято. – 2010-02-07 15:16:39