GNU/Linux >> Belajar Linux >  >> Linux

Cara Mendaftar Pustaka Bersama yang Digunakan oleh executable di Linux

Di bawah lingkungan sistem operasi Linux, executable biner yang terkait dengan aplikasi/program yang ingin Anda jalankan secara langsung ditautkan dengan pustaka bersama yang dimuat saat runtime.

Sebagai pengguna Linux yang ingin tahu dan berkembang, Anda akan tergoda untuk mendapatkan ide tentang pustaka bersama yang terlibat/tertaut dengan executable biner yang Anda jalankan selama startup program normal.

Artikel ini akan memandu kita melalui beberapa pendekatan untuk mengetahui semua pustaka bersama yang digunakan oleh executable di Linux.

Ikhtisar Singkat tentang Perpustakaan Linux

Seorang programmer atau pengguna yang akrab dengan dunia pemrograman akan mendefinisikan perpustakaan sebagai potongan/segmen kode yang telah dikompilasi sebelumnya yang disatukan dalam cara/format yang terorganisir. Sifat/atribut perpustakaan yang telah dikompilasi sebelumnya membuatnya fleksibel dan mudah digunakan kembali di antara berbagai program.

Di bawah arsitektur sistem operasi Linux, kita dapat mengkategorikan perpustakaan sebagai statis (pustaka statis ) atau dibagikan (perpustakaan bersama ).

Pustaka statis terikat secara statis ke program tertentu dan hanya dapat diakses selama waktu kompilasi program. Pustaka bersama menjadi aktif setelah program diluncurkan dan akan disimpan di memori selama durasi runtime program.

Cara Menemukan Pustaka Bersama Program di Linux

Sebelum menentukan pustaka bersama yang terkait dengan program yang Anda targetkan, Anda harus terlebih dahulu mengetahui di mana file yang dapat dieksekusi yang terkait dengan program Anda berada. Di Linux, lokasi executable program Anda biasanya berada di dalam /usr/bin direktori.

$ ls -l /usr/bin

Kolom di paling kanan mencantumkan nama program yang dapat dijalankan.

Temukan Pustaka Bersama Program Linux Menggunakan Perintah ldd

ldd perintah ada sebagai skrip shell langsung yang menunjuk ke perpustakaan bersama program. Sesuai dengan tangkapan layar di atas, misalnya, mari kita coba mengeluarkan pustaka bersama yang terkait dengan aplikasi anydesk.

Kita dapat menentukan lokasi eksekusi Anydesk dengan perintah:

$ whereis anydesk

Untuk menentukan perpustakaan bersamanya melalui ldd perintah, kami akan mengeksekusi:

$ ldd /usr/bin/anydesk 

Seperti yang Anda lihat, kami memiliki daftar banyak perpustakaan yang terkait dengan anydesk aplikasi. Harap perhatikan bahwa ldd perintah cenderung menjalankan program yang diminta untuk mengambil info perpustakaan bersama. Oleh karena itu, hanya kaitkan perintah dengan executable tepercaya.

Temukan Pustaka Bersama Program Menggunakan Perintah objdump dan grep

objdump perintah menjadi bagian dari GNU Binutils package akan fokus menampilkan informasi file objek sedangkan grep perintah akan mencantumkan pustaka bersama yang terkait dengan program.

Mari kita lihat apa yang akan dihasilkan oleh perintah ini untuk program seperti whois digunakan untuk info nama domain.

$ whereis whois 

Selanjutnya, cari tahu pustaka program yang dibagikan.

$ objdump -p /usr/bin/whois | grep 'NEEDED'

Seperti yang Anda lihat, whois program pencarian domain yang dapat dieksekusi dikaitkan dengan dua perpustakaan bersama.

Atau, Anda juga dapat menggunakan readelf perintah untuk mengambil informasi yang dibagikan untuk program zip yang dapat dieksekusi.

$ whereis zip
$ readelf --dynamic /usr/bin/zip | grep NEEDED

Sesuai output, zip program yang dapat dieksekusi dikaitkan dengan dua perpustakaan bersama.

Temukan Pustaka Bersama Menggunakan Perintah Awk

Opsi ini sangat ideal untuk program yang sudah berjalan. Pertama-tama kita harus mendapatkan PID (ID Proses ). Misalnya, katakanlah kita memiliki Tembakan Api utilitas tangkapan layar berjalan.

Untuk mendapatkan PID , kita akan menjalankan:

$ pgrep flameshot 

45261

/proc//maps Our kami file akan diubah menjadi /proc/45261/maps . Sekarang kita dapat menggabungkan file ini dengan awk perintah untuk mengambil Flameshot pustaka bersama yang dapat dieksekusi seperti yang ditunjukkan di bawah ini.

$ awk '$NF!~/\.so/{next} {$0=$NF} !a[$0]++' /proc/45261/maps

Sekarang kita telah mengetahui dengan baik daftar semua pustaka bersama yang terkait dengan program yang dapat dieksekusi di Linux.


Linux
  1. Pengantar Pustaka Bersama Linux (Cara Membuat Pustaka Bersama)

  2. Cara menginisialisasi perpustakaan bersama di Linux

  3. Mengupas perpustakaan bersama linux

  1. Cara Mengelola dan Mendaftar Layanan di Linux

  2. Bagaimana cara menampilkan semua pustaka bersama yang digunakan oleh executable di Linux?

  3. Bagaimana cara mendaftar proses yang dilampirkan ke segmen memori bersama di linux?

  1. Cara Menggunakan Perintah SS Linux

  2. Cara Mendaftar Proses yang Berjalan di Linux

  3. Cara Mendaftar Pengguna di Linux