Cara mengatur variabel lingkungan LD_LIBRARY_PATH di linux


213

Saya pertama kali menjalankan perintah: export LD_LIBRARY_PATH=/usr/local/lib

Lalu aku telah membuka .bash_profileberkas: vi ~/.bash_profile. Dalam file ini, saya meletakkan:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Kemudian jika terminal ditutup dan dihidupkan ulang, pengetikan echo $LD_LIBRARY_PATHtidak menampilkan hasil.

Bagaimana cara mengatur jalur secara permanen?


9
Tunjukkan dengan jelas di sini ... Jika Anda hanya ingin memperbaiki apa yang Anda lakukan, tambahkan $, misalnyaexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie

11
jalankan saja sudo ldconfigsetelah itu
Necktwi

ini mungkin konyol tapi kan $ source ~/.bash_profile? Saya cenderung lupa itu. Dan kemudian seperti @neckTwi berkata jalankan ldconfig
ashley

Jawaban:


208

Anda harus menambahkan rincian lebih lanjut tentang distribusi Anda, misalnya di bawah Ubuntu cara yang tepat untuk melakukan ini adalah dengan menambahkan .conffile khusus /etc/ld.so.conf.d, misalnya

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

di dalam file Anda seharusnya menulis path lengkap ke direktori yang berisi semua perpustakaan yang ingin Anda tambahkan ke sistem, misalnya

/home/linux/myLocalLibs

ingatlah untuk menambahkan hanya path ke dir, bukan path lengkap untuk file, semua lib di dalam path itu akan secara otomatis diindeks.

Simpan dan jalankan sudo ldconfiguntuk memperbarui sistem dengan lib ini.


Maaf karena tidak menyebutkan distribusi. Fedora 16
singha

Anda dapat menggunakan solusi ini untuk Fedora, solusi yang disarankan oleh Joachim Pileborg itu berguna jika Anda memutuskan untuk membatasi tampilan lib ini untuk 1 pengguna tertentu, jika Anda ingin sistem wide lib tou harus menggunakan solusi saya. Itu semua tergantung pada apa yang Anda cari.
user1824407

11
Apakah ini benar-benar jalan yang benar? Misalkan Anda memiliki beberapa pengguna yang membangun perpustakaan lokal, dan Anda telah menambahkan keduanya ke /etc/ld.so.conf.d. Sekarang pengguna A dapat menautkan ke perpustakaan lokal pengguna B. Tidak baik.
ergosys

/usr/local/libbiasanya sudah ada di sana, jadi tidak perlu mengedit file apa pun, cukup sudo ldconfig.
nyuszika7h

1
Aneh itu berhasil dengan kalian semua, namun itu tidak berhasil bagi saya, sementara export LD_LIBRARY_PATH ....cara kerjanya !!
Akuntan

106

Pertahankan jalur sebelumnya, jangan timpa:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

Anda dapat menambahkannya ke ~ / .bashrc Anda:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

36

Menambahkan

LD_LIBRARY_PATH = "/ path / you / want1: / path / you / want / 2"

untuk /etc/environment

Lihat Dokumentasi Ubuntu .

KOREKSI: Saya harus mengikuti saran saya sendiri dan benar-benar membaca dokumentasinya. Dikatakan bahwa ini tidak berlaku untuk LD_LIBRARY_PATH: Sejak Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH tidak dapat disetel dalam $ HOME / .profile, / etc / profile, atau file / etc / environment. Anda harus menggunakan file konfigurasi /etc/ld.so.conf.d/ .conf . * Maka jawaban pengguna1824407 tepat.


Wow, saya melihat halaman itu beberapa kali dan mengabaikannya. Terima kasih telah melihatnya dan membawanya ke perhatian kami.
Michael Scheper

4
Ubuntu adalah kasus khusus di sini. Pandangan Ubuntu adalah bahwa semua pengguna menginginkan pustaka yang sama dan bahwa hanya ada satu tempat untuk setiap pustaka (baca diskusi di Launchpad bug # 366728). Namun, pada penelitian multi-pengguna atau sistem pengembangan, Anda ingin setiap pengguna dapat memiliki versi perpustakaan mereka sendiri. Sebagian besar distribusi Linux memungkinkan ini dan telah melakukannya selama bertahun-tahun.
Joachim Wagner

9
Menghabiskan 4 jam mencoba mencari tahu mengapa saya dapat mengatur PATH dan PKG_CONFIG_PATH, tetapi tidak LD_LIBRARY_PATH. Saya tidak bisa.
Mikhail Cheshkov

@ JoachimWagner Ya, ini benar, dan mengapa conda dan / atau bioconda atau virtenv sekarang menjadi metode yang disukai untuk menjalankan program tertentu dengan variabel lingkungan khusus. Dengan menggunakan lingkungan terbungkus, secara tidak sengaja mengatur jalur LD_LIBRARY tidak akan memiliki masalah / masalah sistemik.
Andor Kiss

23

File .bash_profilehanya dieksekusi oleh shell login. Anda mungkin perlu memasukkannya ~/.bashrc, atau cukup logout dan login lagi.


Joachim Pileborg terima kasih. Saya telah mem-boot ulang sistem dan sekarang jalurnya diatur secara permanen.
singha


17

Untuk beberapa alasan tidak ada yang menyebutkan fakta bahwa bashrc perlu di-re-source setelah diedit. Anda dapat keluar dan masuk kembali (seperti yang disebutkan di atas) tetapi Anda juga dapat menggunakan perintah: source ~/.bashrcatau . ~/.bashrc.


14

Taruh export LD_LIBRARY_PATH=/usr/local/lib di ~/.bashrc[sebaiknya menjelang akhir script untuk menghindari menimpa setiap di antara, default ~/.bashrcdatang dengan banyak if-elsepernyataan]

Posting bahwa setiap kali Anda membuka terminal / konsole baru, LD_LIBRARY_PATHakan tercermin


Maaf karena tidak menyebutkan distribusi. Fedora 16
singha

7
  1. Buka folder beranda dan edit profil
  2. Tempatkan baris berikut di akhir

    export LD_LIBRARY_PATH=<your path>

  3. Simpan dan keluar.

  4. Jalankan perintah ini

    sudo ldconfig


3

Saya melakukan hal berikut di Mint 15 hingga 17, juga berfungsi di server ubuntu 12.04 ke atas:

sudo vi /etc/bash.bashrc 

gulir ke bawah, dan tambahkan:

export LD_LIBRARY_PATH=.

Semua pengguna memiliki variabel lingkungan yang ditambahkan.


3

Anda dapat mencoba menambahkan skrip khusus, katakan myenv_vars.shdi /etc/profile.d.

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh

Tambahkan ini ke file kosong, dan simpan.

export LD_LIBRARY_PATH=/usr/local/lib

Logout dan login, LD_LIBRARY_PATHakan diatur secara permanen.


1
Jawaban yang luar biasa. Pilihan terbaik bagi saya untuk mengekspor jalur setiap kali selama inisialisasi sistem dan jauh lebih aman daripada mengedit secara fisik / etc / bashrc
Joseph
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.