Dalam pemrograman, library/perpustakaan adalah bermacam-macam potongan kode pra-kompilasi yang dapat digunakan kembali dalam sebuah program. Library/Perpustakaan menyederhanakan hidup bagi pemrogram, karena menyediakan fungsi, rutinitas, kelas, struktur data dan sebagainya yang dapat digunakan kembali (ditulis oleh programmer lain), yang dapat mereka gunakan dalam program mereka.

Misalnya, jika Anda membangun aplikasi yang perlu melakukan operasi matematika, Anda tidak perlu membuat fungsi matematika baru untuk itu, Anda bisa menggunakan fungsi yang ada di perpustakaan untuk bahasa pemrograman itu.

Contoh perpustakaan di Linux meliputi libc (library standar C) atau glibc (versi GNU dari library C standar), libcurl (multiprotocol file transfer library), libcrypt (library yang digunakan untuk enkripsi, hashing, dan encoding di C) dan banyak lagi .

Linux mendukung dua kelas perpustakaan, yaitu:

  • Perpustakaan statis – terikat pada program secara statis pada waktu kompilasi.
  • Perpustakaan dinamis atau shared – dimuat saat sebuah program diluncurkan dan dimuat ke memori dan pengikatan terjadi pada saat run time.

Perpustakaan dinamis atau shared dapat dikategorikan menjadi:

  • Perpustakaan yang terhubung secara dinamis – di sini sebuah program terhubung dengan perpustakaan bersama dan kernel memuat perpustakaan (jika tidak ada dalam memori) pada saat eksekusi.
  • Perpustakaan yang dimuat secara dinamis – program mengambil kendali penuh dengan memanggil fungsi dengan perpustakaan.

Shared Library Naming Conventions (Konvensi Penamaan Perpustakaan Bersama)

Pustaka bersama dinamai dengan dua cara: nama perpustakaan (soname) dan “namafile” (path absolut ke file yang menyimpan kode perpustakaan).

Sebagai contoh, soname untuk libc adalah libc.so.6: Dimana lib adalah awalannya, c adalah nama deskriptif, jadi berarti shared object, dan 6 adalah versinya. Dan nama filenya adalah: /lib64/libc.so.6. Perhatikan bahwa soname sebenarnya adalah symbolic link ke nama file.

Locating Shared Libraries in Linux (Menemukan Shared Libraries di Linux)

Pustaka bersama dimuat oleh program ld.so (atau ld.so.x) dan ld-linux.so (atau ld-linux.so.x), di mana x adalah versinya. Di Linux, /lib/ld-linux.so.x mencari dan memuat semua shared library yang digunakan oleh sebuah program.

Sebuah program dapat memanggil perpustakaan dengan menggunakan nama perpustakaan atau nama filenya, dan sebuah perpustakaan menyimpan direktori dimana perpustakaan dapat ditemukan di filesystem. Secara default, perpustakaan terletak di /usr/local/lib, /usr/local/lib64, /usr/lib dan /usr/lib64; perpustakaan startup sistem ada di /lib dan /lib64. Pemrogram dapat, bagaimanapun, menginstal perpustakaan di lokasi kustom.

Jalur perpustakaan dapat didefinisikan di file /etc/ld.so.conf yang dapat Anda edit dengan editor baris perintah.

Managing Shared Libraries in Linux (Mengelola Shared Libraries di Linux)

ekarang mari kita lihat bagaimana menangani shared library. Untuk mendapatkan daftar semua ketergantungan perpustakaan bersama untuk file biner, Anda dapat menggunakan utilitas ldd. Output dari ldd adalah dalam bentuk:

library name => filename (some hexadecimal value)
OR
filename (some hexadecimal value) #this is shown when library name can’t be read

Perintah ini menunjukkan semua ketergantungan shared library untuk sebuah aplikasi audacious.

Karena shared library bisa ada di berbagai direktori, mencari melalui semua direktori ini saat sebuah program diluncurkan akan sangat tidak efisien: yang merupakan salah satu kelemahan perpustakaan dinamis. Oleh karena itu mekanisme caching yang digunakan, dilakukan oleh program ldconfig.

Secara default, ldconfig membaca isi /etc/ld.so.conf, membuat link simbolik yang sesuai di direktori link dinamis, dan kemudian menulis cache ke /etc/ld.so.cache yang kemudian mudah digunakan oleh program lain. .

Hal ini sangat penting terutama bila Anda baru saja menginstal shared library baru atau membuat direktori perpustakaan baru Anda sendiri atau dibuat. Anda perlu menjalankan perintah ldconfig untuk melakukan perubahan.