Menggunakan Command "ldd" di Linux

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 maklumat

Bagaimana Menggunakan Perintah ldd

Anda boleh menggunakan arahan berikut untuk mendapatkan maklumat lanjut dari mana-mana arahan ldd:

ldd -v / path / to / program / executable

Output 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 / program

Output 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 firefox

Masalah dengan arahan mencari , bagaimanapun, adalah bahawa ia bukan sahaja akan menyenaraikan executable tetapi di mana-mana yang terletak di Firefox, seperti ini:

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 firefox

Kali 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 / firefox

Output 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.