Apakah normal jika variabel LD_LIBRARY_PATH hilang dari lingkungan?


15

Saya telah menemukan secara kebetulan bahwa pada Debian Jessie saya tidak ada LD_LIBRARY_PATHvariabel (tepatnya printenv | grep LDmenunjukkan tidak ada yang terkait dengan linker dan echo "$LD_LIBRARY_PATH"menunjukkan juga tidak ada).

Ini adalah kasus di emulator terminal x ( yang mungkin menghapusnya karena setgid ) serta di terminal dasar ( Ctrl+Alt+F1).

Saya tahu itu LD_LIBRARY_PATH mungkin dianggap buruk sehingga Debian dapat memblokirnya, tetapi di sisi lain ada beberapa file /etc/ld.so.conf.d/yang berisi beberapa direktori untuk ditambahkan LD_LIBRARY_PATH. Tak satu pun dari file rc saya (yang saya tahu) mengacaukan LD_LIBRARY_PATHkeduanya.

Mengapa saya tidak melihat LD_LIBRARY_PATHvariabel?

Jawaban:


22

Ya, itu normal bahwa Anda tidak memiliki yang eksplisit LD_LIBRARY_PATH. Baca juga ldconfig (8) dan ld-linux (8) dan tentang rpath . Perhatikan bahwa ldconfigpembaruan /etc/ld.so.cache, bukan LD_LIBRARY_PATH. Kadang-kadang Anda akan mengatur rPath yang dapat dieksekusi secara eksplisit dengan -Wl,-rpath,direktori diteruskan ke gccpada link waktu.

Jika Anda membutuhkan LD_LIBRARY_PATH(tetapi Anda mungkin seharusnya tidak), atur sendiri (misalnya dalam ~/.bashrc).

Jika Anda membutuhkan sistem pengaturan lebar, Anda bisa misalnya mempertimbangkan menambahkan /usr/local/lib/di /etc/ld.so.confdan menjalankan ldconfigsetelah instalasi dari setiap perpustakaan di sana.

AFAIK $LD_LIBRARY_PATHhanya digunakan oleh penghubung dinamis ld-linux.so(dan oleh dlopen (3) yang menggunakannya) setelah mengeksekusi (2) . Lihat juga ldd (1) .

Baca Cara Menulis Perpustakaan Bersama Drepper untuk lebih lanjut.


Itu kesalahan saya, saya pikir LD_LIBRARY_PATH adalah produk dari menjalankan ldconfig. Sementara itu adalah input ldconfig bersama dengan file di /etc/ld.so.conf.
calavera.info

1
Perasaan saya adalah yang ldconfigtidak menggunakan $LD_LIBRARY_PATH(yang hanya digunakan pada ld-linux.sowaktu)
Basile Starynkevitch

3
@ calavera.info bukan keduanya. Linker dinamis digunakan LD_LIBRARY_PATH bersama dengan output pada ldconfigsaat runtime. ldconfigtidak menggunakan atau mengubah LD_LIBRARY_PATH.
hobbs

Sekarang saya dapat melihat bahwa saya telah benar-benar kacau, mungkin dengan menghabiskan terlalu banyak waktu di Jawa, di mana "classpath" adalah virtualy satu-satunya konfigurasi penghubung dinamis. Segalanya tampak jelas sekarang, terima kasih banyak.
calavera.info
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.