Odpal komendę ldd
z binarką jako parametrem, np:
$ ldd sortingalgorithmsbenchmark
linux-vdso.so.1 => (0x00007fff171fe000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9706b68000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f970686c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9706655000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9706295000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9706e88000)
To pokazuje tylko pliki .so. Pliki .a to chyba tylko przy kompilacji są potrzebne.
Z tym, że te pliki .so które ci się wypiszą mają kolejne zależności, a tamte pliki kolejne, itd więc ręcznie raczej ciężko będzie zrobić paczkę która zawiera te pliki .so które potrzeba do odpalenia programu na dowolnym Linuksie. Lepiej po prostu napisać użytkownikowi coś w stylu: mój program wymaga biblioteki liblolekfiołek w wersji 2.1 lub wyższej.
Na upartego możesz jeszcze szukać plików za pomocą locate
, np:
$ locate libstdc++.a
/usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a
/usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.a
Przy czym locate
korzysta z bazy danych uaktualnianej przez updatedb
.