Untuk sekali saja, atur variabel LD_LIBRARY_PATH
ke daftar direktori yang dipisahkan titik dua untuk dicari. Ini analog dengan PATH
untuk yang dapat dieksekusi, kecuali bahwa direktori sistem standar juga dicari setelah yang ditentukan melalui lingkungan.
LD_LIBRARY_PATH=/usr/local/lib64 ./cart5
Jika Anda memiliki program yang menyimpan pustaka di lokasi yang tidak standar dan tidak dapat menemukannya sendiri, Anda dapat menulis skrip pembungkus:
#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
else
LD_LIBRARY_PATH=/usr/local/lib64
fi
export LD_LIBRARY_PATH
exec /path/to/cart5 "[email protected]"
Daftar direktori sistem standar disimpan di /etc/ld.so.conf
. Sistem terkini mengizinkan file ini untuk menyertakan file lain; jika milik Anda berisi sesuatu seperti include /etc/ld.so.conf.d/*.conf
, buat file baru bernama /etc/ld.so.conf.d/mala.conf
berisi direktori yang ingin Anda tambahkan. Setelah Anda mengubah /etc/ld.so.conf
atau file yang disertakan, jalankan /sbin/ldconfig
agar perubahan Anda diterapkan (ini memperbarui cache).
(LD_LIBRARY_PATH
juga berlaku untuk banyak penyatuan lainnya, termasuk FreeBSD, NetBSD, OpenBSD, Solaris dan Tru64. HP-UX memiliki SHLIB_PATH
dan Mac OS X memiliki DYLD_LIBRARY_PATH
. /etc/ld.so.conf
memiliki analog di sebagian besar uni tetapi lokasi dan sintaks berbeda lebih luas.)
Jika ingin menghindari LD_LIBRARY_PATH, Anda juga dapat melakukan ini, selama menautkan:
gcc -o exename -L/path/to/dynamiclib/ -lnameofLib \
-Wl,-R/path/to/dynamiclib/ sourceCode1.c ...
-Wl,... digunakan untuk meneruskan perintah tambahan ke linker, dan dalam hal ini, dengan -R Anda memberi tahu linker untuk menyimpan jalur ini sebagai "jalur pencarian default" untuk .so.
Saya mencatat banyak kiat kecil seperti ini, di situs saya:
https://www.thanassis.space/tricks.html