Cách đặt biến môi trường LD_LIBRARY_PATH trong linux


212

Tôi đã thực hiện lệnh đầu tiên: export LD_LIBRARY_PATH=/usr/local/lib

Sau đó, tôi đã mở .bash_profiletập tin : vi ~/.bash_profile. Trong tập tin này, tôi đặt:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Sau đó, nếu thiết bị đầu cuối được đóng và khởi động lại, gõ echo $LD_LIBRARY_PATHsẽ hiển thị không có kết quả.

Làm thế nào để thiết lập đường dẫn vĩnh viễn?


9
Trỏ nó ra rõ ràng ở đây ... Nếu bạn chỉ muốn sửa chữa những gì bạn đã làm, thêm một $, ví dụ:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie

11
chỉ cần chạy sudo ldconfigsau đó
Necktwi

Điều này có thể là ngớ ngẩn nhưng bạn $ source ~/.bash_profile? Tôi có xu hướng quên điều đó. Và sau đó như @neckTwi đã nói chạy ldconfig
ashley

Câu trả lời:


208

Bạn nên thêm chi tiết về bản phân phối của mình, ví dụ như trong Ubuntu, cách đúng đắn để làm điều này là thêm một .conftệp tùy chỉnh vào /etc/ld.so.conf.d, ví dụ:

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

trong tập tin, bạn phải ghi đường dẫn đầy đủ đến thư mục chứa tất cả các thư viện mà bạn muốn thêm vào hệ thống, ví dụ

/home/linux/myLocalLibs

hãy nhớ chỉ thêm đường dẫn đến thư mục, không phải đường dẫn đầy đủ cho tệp, tất cả các lib bên trong đường dẫn đó sẽ được tự động lập chỉ mục.

Lưu và chạy sudo ldconfigđể cập nhật hệ thống với libs này.


Xin lỗi vì đã không đề cập đến việc phân phối. Fedora 16
singha

bạn có thể sử dụng giải pháp này cho Fedora, giải pháp được đề xuất bởi Joachim Pileborg sẽ hữu ích nếu bạn quyết định giới hạn chế độ xem của lib này cho 1 người dùng cụ thể, nếu bạn muốn một lib toàn hệ thống nên sử dụng giải pháp của tôi. Tất cả phụ thuộc vào những gì bạn đang tìm kiếm.
dùng1824407

11
Đây thực sự là cách đúng đắn? Giả sử bạn có nhiều người dùng xây dựng thư viện cục bộ và bạn đã thêm cả hai người này vào /etc/ld.so.conf.d. Bây giờ người dùng A có thể liên kết với các thư viện địa phương của người dùng B. Không tốt.
ergosys

/usr/local/libthường đã có sẵn, vì vậy không cần chỉnh sửa bất kỳ tệp nào sudo ldconfig.
nyuszika7h

1
Lạ là nó làm việc với tất cả các bạn, tuy nhiên nó không hiệu quả với tôi, trong khi export LD_LIBRARY_PATH ....cách làm việc !!
Kế toán م

105

Giữ đường dẫn trước đó, không ghi đè lên nó:

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

Bạn có thể thêm nó vào ~ / .bashrc:

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

36

Thêm vào

LD_LIBRARY_PATH = "/ đường dẫn / bạn / muốn1: / đường dẫn / bạn / muốn / 2"

đến /etc/environment

Xem Tài liệu Ubuntu .

ĐÚNG: Tôi nên có lời khuyên của riêng mình và thực sự đọc tài liệu. Nó nói rằng điều này không áp dụng cho LD_LIBRARY_PATH: Vì Ubuntu 9.04 Jasyy Jackalope, LD_LIBRARY_PATH không thể được đặt trong các tệp $ HOME / .profile, / etc / profile, cũng không / etc / môi trường. Bạn phải sử dụng tập tin cấu hình /etc/ld.so.conf.d/ .conf. * Vì vậy, câu trả lời của user1824407 được đặt ra.


Wow, tôi đã xem trang đó nhiều lần và bỏ qua điều đó. Cảm ơn vì đã phát hiện ra nó và mang đến sự chú ý của chúng tôi.
Michael Scheper

4
Ubuntu là một trường hợp đặc biệt ở đây. Quan điểm của Ubuntu là tất cả người dùng đều muốn có cùng một thư viện và chỉ có một nơi duy nhất cho mỗi thư viện (đọc thảo luận về lỗi Launchpad # 366728). Tuy nhiên, trên các hệ thống nghiên cứu hoặc phát triển đa người dùng, bạn muốn mỗi người dùng có thể có các phiên bản thư viện riêng. Hầu hết các bản phân phối Linux cho phép điều này và đã làm như vậy trong nhiều năm.
Joachim Wagner

9
Đã dành 4 giờ để cố gắng tìm hiểu lý do tại sao tôi có thể đặt PATH và PKG_CONFIG_PATH, nhưng không phải LD_LIBRARY_PATH. Tôi thậm chí không thể.
Mikhail Cheshkov

@JoachimWagner Vâng, điều này là chính xác, và tại sao conda và / hoặc bioconda hoặc virtenv hiện là một phương pháp ưa thích để gọi một chương trình cụ thể với các biến môi trường đặc biệt. Bằng cách sử dụng các môi trường được bao bọc, việc vô tình thiết lập đường dẫn LD_LIBRARY sẽ không có vấn đề / vấn đề mang tính hệ thống.
Andor Kiss

23

Các tập tin .bash_profilechỉ được thực hiện bởi shell đăng nhập. Bạn có thể cần phải đặt nó vào ~/.bashrc, hoặc chỉ cần đăng xuất và đăng nhập lại.


Cảm ơn bạn Joachim Pileborg. Tôi đã khởi động lại hệ thống và bây giờ đường dẫn của nó được đặt vĩnh viễn.
singha


17

Vì một số lý do, không ai đề cập đến thực tế là bashrc cần được cung cấp lại sau khi chỉnh sửa. Bạn có thể đăng xuất và đăng nhập lại (như đã đề cập ở trên) nhưng bạn cũng có thể sử dụng các lệnh: source ~/.bashrchoặc . ~/.bashrc.


14

Đặt export LD_LIBRARY_PATH=/usr/local/libvào ~/.bashrc[tốt nhất là về cuối tập lệnh để tránh bất kỳ phần ghi đè nào ở giữa, Mặc định ~/.bashrcđi kèm với nhiều if-elsecâu lệnh]

Đăng rằng bất cứ khi nào bạn mở một thiết bị đầu cuối / konsole mới, LD_LIBRARY_PATHsẽ được phản ánh


Xin lỗi vì đã không đề cập đến việc phân phối. Fedora 16
singha

7
  1. Chuyển đến thư mục chính và chỉnh sửa .profile
  2. Đặt dòng sau vào cuối

    export LD_LIBRARY_PATH=<your path>

  3. Lưu và thoát.

  4. Thực hiện lệnh này

    sudo ldconfig


3

Tôi làm như sau trong Mint 15 đến 17, cũng hoạt động trên máy chủ Ubuntu 12.04 trở lên:

sudo vi /etc/bash.bashrc 

cuộn xuống phía dưới và thêm:

export LD_LIBRARY_PATH=.

Tất cả người dùng có biến môi trường được thêm vào.


3

Bạn có thể thử thêm một tập lệnh tùy chỉnh, nói myenv_vars.shvào /etc/profile.d.

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

Thêm phần này vào tập tin trống và lưu nó.

export LD_LIBRARY_PATH=/usr/local/lib

Đăng xuất và đăng nhập, LD_LIBRARY_PATHsẽ được thiết lập vĩnh viễn.


1
Câu trả lời tuyệt vời. Lựa chọn tốt nhất cho tôi để xuất một đường dẫn mỗi lần trong quá trình khởi tạo hệ thống và an toàn hơn nhiều so với chỉnh sửa vật lý / etc / bashrc
Joseph
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.