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