Perintah ldd boleh digunakan untuk menunjukkan kepada perpustakaan bersama yang dikehendaki oleh mana-mana program yang diberikan.
Ini berguna untuk bekerja apabila terdapat pergantungan yang hilang dan boleh digunakan untuk menyenaraikan fungsi dan objek yang hilang.
Sintaks Perintah ldd
Inilah sintaks yang betul apabila menggunakan arahan ldd:
ldd [OPTION] ... FILE ...Berikut adalah suis perintah ldd yang boleh dimasukkan ke dalam [OPTION] tempat dalam perintah di atas:
--Tolong mencetak bantuan ini dan keluar - maklumat versi cetakan peralihan dan exit -d, --data-relocs proses pemindahan data -r, --fungsi-relocs proses data dan fungsi penempatan semula -u, - cetak tidak digunakan langsung kebergantungan langsung -v, - nyatakan semua maklumatBagaimana Menggunakan Perintah ldd
Anda boleh menggunakan arahan berikut untuk mendapatkan maklumat lanjut dari mana-mana arahan ldd:
ldd -v / path / to / program / executableOutput menunjukkan maklumat versi serta laluan dan alamat ke perpustakaan yang dikongsi, seperti ini:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Jika fail SO tidak wujud sama sekali, anda boleh mencari perpustakaan yang hilang dengan menggunakan arahan berikut:
ldd -d laluan / ke / programOutput serupa dengan yang berikut:
linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)Penting: Jangan sekali-kali jalankan arahan ldd terhadap program yang tidak dipercayai kerana perintah itu sebenarnya boleh dilaksanakan. Ini adalah alternatif yang lebih selamat yang menunjukkan hanya ketergantungan langsung dan bukan keseluruhan pokok pergantungan: objdump -p / path / to / program | grep PERLU .
Cara Cari Laluan untuk Aplikasi
Anda perlu menyediakan jalan penuh ke aplikasi jika anda ingin mencari dependensi dengan ldd, yang mana anda boleh melakukan beberapa cara.
Sebagai contoh, inilah cara anda mencari laluan ke Firefox :
cari / -name firefoxMasalah dengan arahan mencari , bagaimanapun, adalah bahawa ia bukan sahaja akan menyenaraikan executable tetapi di mana-mana yang terletak di Firefox, seperti ini:
- /etc/skel/.mozilla/firefox
- / home // cache / mozilla / firefox
- /home//.mozilla/firefox
- / usr / bin / Firefox
- / usr / lib / Firefox
- / usr / lib / Firefox / Firefox
Pendekatan ini agak berlebihan dan anda mungkin perlu menggunakan perintah sudo untuk menaikkan keistimewaan anda, jika tidak, anda mungkin mendapat banyak kebenaran yang menafikan kesalahan.
Sebaliknya lebih mudah untuk menggunakan arahan whereis untuk mencari jalan aplikasi:
mana firefoxKali ini output mungkin kelihatan seperti ini:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Apa yang perlu anda lakukan sekarang untuk mencari perpustakaan yang dikongsi untuk Firefox adalah menaip perintah berikut:
ldd / usr / bin / firefoxOutput dari arahan akan menjadi seperti ini:
linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)
Linux-vdso.so.1 adalah nama perpustakaan dan nombor hex ialah alamat di mana perpustakaan akan dimuatkan ke ingatan.
Anda akan melihat pada banyak baris lain bahawa simbol = = diikuti dengan jalan. Inilah jalan kepada binari fizikal; nombor hex ialah alamat di mana pustaka akan dimuatkan.