Menggunakan Perintah "ldd" di Linux

Perintah ldd dapat digunakan untuk menunjukkan kepada Anda pustaka bersama yang diperlukan oleh program apa pun yang diberikan.

Ini berguna untuk bekerja ketika ada ketergantungan yang hilang dan dapat digunakan untuk daftar fungsi dan objek yang hilang.

Perintah sintaks ldd

Ini adalah sintaks yang tepat saat menggunakan perintah ldd:

ldd [OPTION] ... FILE ...

Berikut adalah sakelar perintah ldd yang tersedia yang dapat dimasukkan ke tempat [OPTION] dalam perintah di atas:

--Membantu mencetak bantuan ini dan keluar --versi versi cetak informasi dan keluar -d, --data-relokus relokasi data -r, --fungsi-relokus data proses dan relokasi fungsi -u, --menggunakan print dependensi langsung yang tidak digunakan -v, --verbose mencetak semua informasi

Cara Menggunakan Perintah ldd

Anda dapat menggunakan perintah berikut untuk mendapatkan informasi lebih lanjut dari perintah ldd mana pun:

ldd -v / path / ke / program / dieksekusi

Output menampilkan informasi versi serta jalur dan alamat ke pustaka bersama, 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 file SO tidak ada sama sekali, Anda dapat menemukan perpustakaan yang hilang menggunakan perintah berikut:

ldd -d path / ke / program

Outputnya mirip dengan yang berikut:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​tidak ditemukanlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)

Penting: Jangan menjalankan perintah ldd terhadap program yang tidak dapat dipercaya karena perintah mungkin benar-benar mengeksekusinya. Ini adalah alternatif yang lebih aman yang menunjukkan hanya ketergantungan langsung dan bukan seluruh pohon ketergantungan: objdump -p / path / ke / program | grep DIPERLUKAN .

Cara Menemukan Jalan Menuju Aplikasi

Anda harus menyediakan jalur lengkap ke aplikasi jika Anda ingin menemukan dependensinya dengan ldd, yang dapat Anda lakukan dengan sejumlah cara.

Misalnya, ini adalah bagaimana Anda akan menemukan jalan ke Firefox :

temukan / -name firefox

Masalah dengan perintah find , bagaimanapun, adalah bahwa ia tidak hanya akan menampilkan executable tetapi di mana-mana bahwa Firefox berada, seperti ini:

Pendekatan ini sedikit berlebihan dan Anda mungkin perlu menggunakan perintah sudo untuk meningkatkan hak istimewa Anda, jika tidak Anda akan mendapatkan banyak izin ditolak kesalahan.

Alih-alih lebih mudah menggunakan perintah whereis untuk menemukan jalur aplikasi:

dimana firefox

Kali ini hasilnya mungkin terlihat seperti ini:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Yang harus Anda lakukan sekarang untuk menemukan perpustakaan bersama untuk Firefox adalah ketik perintah berikut:

ldd / usr / bin / firefox

Output dari perintah 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 pustaka dan nomor hex adalah alamat tempat pustaka akan dimuat ke dalam memori.

Anda akan melihat pada banyak baris lain bahwa simbol => diikuti oleh sebuah jalur. Ini adalah jalan menuju biner fisik; nomor hex adalah alamat tempat perpustakaan akan dimuat.