Saya memiliki executable biner bernama "alpha" yang membutuhkan pustaka tertaut (libz.so.1.2.7) yang ditempatkan di /home/username/myproduct/lib/libz.so.1.2.7
Saya mengekspor hal yang sama ke instance terminal saya sebelum menelurkan binary yang dapat dieksekusi dengan mengeksekusi perintah berikut.
export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH
Sekarang, ketika saya menelurkan aplikasi lain "bravo" yang membutuhkan pustaka yang sama tetapi dari versi yang berbeda, yaitu (libz.so.1.2.8) yang tersedia
/lib/x86_64-linux-gnu/libz.so.1.2.8
, sistem melempar kesalahan berikut.
version `ZLIB_1.2.3.3' not found (required by /usr/lib/x86_64-linux-gnu/libxml2.so.2)
Jika saya menghapus LD_LIBRARY_PATH
, "bravo" mulai baik-baik saja. Saya mengerti bahwa perilaku di atas karena LD_LIBRARY_PATH
lebih diutamakan daripada jalur direktori didefinisikan dalam /etc/ld.so.conf
sambil mencari perpustakaan terkait dan akibatnya kesalahan di atas terjadi. Saya hanya ingin tahu mengapa pengembang UNIX / LINUX tidak merancang OS untuk mencari perpustakaan yang terhubung di direktori lain sesuai dengan hierarki jika instance perpustakaan pertama adalah versi yang berbeda.
Sederhananya, sistem UNIX / LINUX melintasi seperangkat direktori sampai menemukan perpustakaan yang diperlukan. Tetapi mengapa ia tidak melakukan hal yang sama sampai ia menemukan versi yang diharapkan daripada menerima contoh pertama perpustakaan terlepas dari versinya?
libz.so.1
adalah symlink kelibz.so.1.2.8