Perintah ldconfig digunakan untuk memberitahu sistem tentang lokasi baru dari shared library. Informasi penggunaan yang disediakan oleh /etc/ld.so.conf file konfigurasi.
Perintah ldconfig membuat database cache dari semua perpustakaan berdasarkan file konfigurasi. Cache ini biasanya disimpan di /etc/ld.so.cache mengajukan.
Berikut adalah sintaks dari perintah ldconfig:
# ldconfig [option]
Tabel berikut menjelaskan opsi yang berguna untuk perintah ldconfig:
Opsi | Deskripsi |
---|---|
-v | Verbose; mencetak informasi tambahan. |
-n | Gunakan opsi baris perintah untuk menentukan lokasi perpustakaan bersama yang baru. Contoh:ldconfig -n /some/directory. |
-f | Tentukan file konfigurasi yang berbeda daripada default (/etc/ld.so.conf ). |
-p | Gunakan untuk mencetak daftar perpustakaan saat ini yang disimpan dalam file cache. |
File konfigurasi /etc/ld.so.conf
File konfigurasi utama untuk shared library adalah file /etc/ld.so.conf; namun, biasanya hanya ada satu baris dalam file ini:
# cat /etc/ld.so.conf include ld.so.conf.d/*.conf
Baris include dalam file ini memberi tahu sistem untuk juga menggunakan semua file konfigurasi di direktori yang ditentukan. Dalam kasus contoh sebelumnya, itu adalah semua file yang diakhiri dengan “.conf” di direktori /etc/ld.so.conf.d.
File konfigurasi itu sendiri sederhana. Itu hanya berisi direktori di mana perpustakaan bersama disimpan:
# more /etc/ld.so.conf.d/libiscsi-x86_64.conf /usr/lib64/iscsi # ls /usr/lib64/iscsi libiscsi.so.2 libiscsi.so.2.0.10900
Mencantumkan Pustaka yang Di-cache
Untuk membuat daftar pustaka yang di-cache, Anda dapat menggunakan opsi -p dari perintah ldconfig seperti yang ditunjukkan di bawah ini:
# ldconfig -p | more 784 libs found in cache `/etc/ld.so.cache' p11-kit-trust.so (libc6,x86-64) => /lib64/p11-kit-trust.so libz.so.1 (libc6,x86-64) => /lib64/libz.so.1 libyaml-0.so.2 (libc6,x86-64) => /lib64/libyaml-0.so.2 libyajl.so.2 (libc6,x86-64) => /lib64/libyajl.so.2 libxtables.so.10 (libc6,x86-64) => /lib64/libxtables.so.10 libxslt.so.1 (libc6,x86-64) => /lib64/libxslt.so.1 libxshmfence.so.1 (libc6,x86-64) => /lib64/libxshmfence.so.1 libxml2.so.2 (libc6,x86-64) => /lib64/libxml2.so.2 libxmlrpc_util.so.3 (libc6,x86-64) => /lib64/libxmlrpc_util.so.3 libxmlrpc_server_cgi.so.3 (libc6,x86-64) => /lib64/libxmlrpc_server_cgi.so.3 libxmlrpc_server_abyss.so.3 (libc6,x86-64) => /lib64/libxmlrpc_server_abyss.so.3 ....
Tambahkan perpustakaan baru menggunakan ldconfig
Untuk menambahkan pustaka bersama baru ke sistem, Anda harus mengunduh pustaka ke sistem terlebih dahulu dan menempatkannya ke dalam direktori. Setelah menambahkan pustaka baru, Anda akan membuat file konfigurasi di direktori /etc/ld.so.conf.d dan kemudian menjalankan perintah ldconfig. Semua tugas ini harus dilakukan sebagai pengguna root:
# ls /usr/lib64/test mylib.so.1 # cat /etc/ld.so.conf.d/libtest.conf /usr/lib64/test # ldconfig
Jika perintah ldconfig berhasil dijalankan, tidak akan ada output.
Variabel LD_LIBRARY_PATH
Pengguna biasa tidak berhasil menjalankan perintah ldconfig; namun, jika pengguna biasa ingin menggunakan perpustakaan bersama khusus, maka pengguna tersebut dapat mengunduh file ini ke direktori home-nya dan menggunakan LD_LIBRARY_PATH untuk menunjukkan lokasi file perpustakaan khusus, seperti:
$ ls /home/testuser/lib mylib.so.1 $ LD_LIBRARY_PATH=/home/testuser/lib
Jika dijalankan dengan bermanfaat, perintah terakhir seharusnya tidak menghasilkan output. Untuk menjadikan ini perubahan permanen, tempatkan LD_LIBRARY_PATH=/home/testuser/lib perintah di ~/.bashrc . Anda berkas.
$ vi ~/.bashrc LD_LIBRARY_PATH=/home/testuser/lib export LD_LIBRARY_PATH
Perintah ldd
Anda dapat melihat pustaka bersama apa yang digunakan perintah tertentu dengan menggunakan perintah ldd. Berikut adalah sintaks dari perintah ldd:
# ldd [options] FILE
Misalnya:
# ldd /bin/ls linux-vdso.so.1 => (0x00007ffee2b3f000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ff5a6c22000) libcap.so.2 => /lib64/libcap.so.2 (0x00007ff5a6a1d000) libacl.so.1 => /lib64/libacl.so.1 (0x00007ff5a6814000) libc.so.6 => /lib64/libc.so.6 (0x00007ff5a6447000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ff5a61e5000) libdl.so.2 => /lib64/libdl.so.2 (0x00007ff5a5fe1000) /lib64/ld-linux-x86-64.so.2 (0x00007ff5a6e49000) libattr.so.1 => /lib64/libattr.so.1 (0x00007ff5a5ddc000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff5a5bc0000)
Tujuan menggunakan perintah ldd adalah untuk memecahkan masalah dengan kode yang Anda tulis. Perintah ini memberi tahu Anda tidak hanya perpustakaan apa yang dipanggil, tetapi secara khusus dari direktori mana setiap perpustakaan dipanggil. Ini bisa sangat berguna ketika perpustakaan tidak berperilaku seperti yang Anda harapkan.
Tabel berikut menjelaskan opsi yang berguna untuk perintah ldd:
Opsi | Deskripsi |
---|---|
-v | Verbose; mencetak informasi tambahan. |
-u | Menampilkan semua dependensi langsung yang tidak digunakan. |