Skip to main content

Cari Perpustakaan Dikongsi Program Dengan Perintah "ldd"

Tutorial Cara Menggunakan Command Block (serta Comand2nya) (Jun 2026)

Tutorial Cara Menggunakan Command Block (serta Comand2nya) (Jun 2026)
Anonim

Menggunakan ldd arahan untuk menunjukkan perpustakaan yang dikongsi yang diperlukan oleh mana-mana program yang diberikan - berguna untuk bekerja apabila terdapat pergantungan yang hilang. Perintah juga menyenaraikan fungsi dan objek yang hilang.

Sintaks Perintah ldd

Perhatikan sintaks yang betul untuk arahan ldd untuk mengelakkan ralat:

ldd OPTION … FILE …

Gunakan satu atau lebih suis perintah ldd yang ada, dimasukkan ke dalam OPTION tempat dalam arahan di atas:

--help | cetak bantuan ini dan keluar --version | maklumat versi cetak dan keluar -d, --data-relocs | proses pemindahan data -r, --fungsi-relocs | memproses data dan penempatan semula fungsi -u, --unused | cetak kebergantungan langsung yang tidak digunakan -v, --verbose | cetak semua maklumat

Bagaimana Menggunakan Perintah ldd

Jalankan perintah berikut untuk mendapatkan maklumat lanjut tentang program:

$ 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)

Jangan sekali-kali jalankan arahan ldd terhadap program yang tidak dipercayai kerana ldd sebenarnya boleh melaksanakannya. Sebaliknya, gunakan alternatif yang lebih selamat yang menunjukkan hanya kebergantungan 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 boleh anda lakukan dalam beberapa cara.

Sebagai contoh, inilah cara anda mencari laluan ke Firefox:

$ find / -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:

  • /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 meningkatkan keistimewaan anda, jika tidak, anda mungkin mendapat banyak kesalahan yang ditolak kebenaran.

Sebaliknya lebih mudah untuk menggunakan arahan whereis untuk mencari jalan aplikasi:

$ whereis 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.