Как да покажем споделените библиотеки, от които се нуждае програма ?
Почти всяка програма в Линукс използва споделени библиотеки, дори тези които са компилирани на ръка със gcc. Може да се окаже, че дадена програма компилирана на дадена дистрибуция може да не работи под друга или по-стара версия на същата, на която е била компилирана. Всичко това може да се дължи на липсващи споделени библиотеки.
Можем да използваме ldd за да разберем, от кои библиотеки има нужда нашата програма. Нека да приемем, че имаме програма която се казва по някакъв начин, matrix например. Може да разберем какви споделени библиотеки са й нужни като напишем:
ldd matrix
linux-gate.so.1 => (0x00110000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00111000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0793a000)
libm.so.6 => /lib/libm.so.6 (0x0056e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0790d000)
libc.so.6 => /lib/libc.so.6 (0x00413000)
libdl.so.2 => /lib/libdl.so.2 (0x00599000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0x00ad0000)
/lib/ld-linux.so.2 (0x003f4000)Тук виждаме че използва libncurses.so.5. Този файл може да се намира в /usr/lib, /usr/share/lib, /lib или /usr/local/lib. Освен това, файла може да е връзка към истинския файл и да ви е нужна реалната .so библиотека.
Споделените библиотеки също биха могли да имат зависимости и да се нуждаят от други библиотеки. В този случай виждаме:
ldd -v matrix
...
/lib/libncurses.so.5:
libdl.so.2 (GLIBC_2.1) => /lib/libdl.so.2
libdl.so.2 (GLIBC_2.0) => /lib/libdl.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
...Вижда се, че libncurses има нужда от libc и libdl също.

Possibly Related Posts:
- Оптимизиране на Firefox с tmpfs
- Системни статистики с vmstat
- drop_caches
- Конфигуриране на ядрото: Поддръжка на мрежови протоколи
- Конфигуриране на ядрото