Мне нужно определить, есть ли у библиотеки с именем libunaSA.so
вызывается непосредственно процессом или другой библиотекой, называемой libtoki2.so
. Я думаю, что я ищу pstree для библиотек. В системе работает RHEL 5.3 Beta.
Этот вывод показывает две библиотеки на карте процесса.
# grep -e toki -e una /proc/2335/maps
0043f000-004ad000 r-xp 00000000 08:02 543465 /usr/lib/libtoki2.so
004ad000-004c5000 rwxp 0006d000 08:02 543465 /usr/lib/libtoki2.so
01185000-01397000 r-xp 00000000 08:02 543503 /usr/lib/libunaSA.so
01397000-013dc000 rwxp 00211000 08:02 543503 /usr/lib/libunaSA.so
Этот вывод показывает, что только libtoki2.so
библиотека находится в текущем кеше
# ldconfig -p | grep -e una -e toki
libtoki2.so (libc6) => /usr/lib/libtoki2.so
libtoki.so.4.4.1 (libc6) => /usr/lib/libtoki.so.4.4.1
libtoki.so.2 (libc6) => /usr/lib/libtoki.so.2
Я прикрепил strace к запущенному процессу, но он не дает большого вывода
# strace -p 2335
Process 2335 attached - interrupt to quit
futex(0xb7ef5bd8, FUTEX_WAIT, 2336, NULL
Вот вывод ldd для каждой библиотеки
# ldd /usr/lib/libtoki2.so
linux-gate.so.1 => (0x00a0a000)
libdl.so.2 => /lib/libdl.so.2 (0x001bd000)
libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3 (0x00f3f000)
libm.so.6 => /lib/libm.so.6 (0x00b27000)
libc.so.6 => /lib/libc.so.6 (0x0043d000)
/lib/ld-linux.so.2 (0x00742000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00110000)
# ldd /usr/lib/libunaSA.so
linux-gate.so.1 => (0x00244000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00baf000)
libdl.so.2 => /lib/libdl.so.2 (0x007fa000)
libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3 (0x009ce000)
libm.so.6 => /lib/libm.so.6 (0x00c96000)
libc.so.6 => /lib/libc.so.6 (0x004a2000)
/lib/ld-linux.so.2 (0x00742000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00a9f000)
Все, что вы опубликовали, предполагает, что libunaSA.so стоит особняком. libtoki2.so не требует libunaSA (как показано ldd). Вы можете попробовать использовать ltrace или lsof против работающего приложения, чтобы узнать, вызывается ли libunaSA; если libtoki2 сделает вызов, то он будет скрыт (я полагаю) из вывода ltrace.
lsof покажет, требует ли двоичный файл libunaSA вообще.
И ltrace, и lsof доступны для RHEL 5.