Đặt LD_LIBRARY_PATH cho các ứng dụng được khởi động từ máy tính để bàn


8

Tôi đã cài đặt Qt Creator trên Ubuntu 10.04 LTS. Khi tôi khởi chạy Qt Creator từ máy tính để bàn, tôi có thể xây dựng ứng dụng tôi đang làm việc nhưng không thể chạy hoặc gỡ lỗi. Sau khi vật lộn một chút, tôi thấy rằng LD_LIBRARY_PATH không được đặt cho các ứng dụng chạy từ máy tính để bàn. Nếu tôi khởi động Qt Creator từ bash (trong đó LD_LIBRARY_PATH được đặt trong .bashrc), mọi thứ sẽ chạy và gỡ lỗi một cách hoàn hảo.

Làm cách nào để tôi đặt LD_LIBRARY_PATH để nó được đặt cho tất cả các ứng dụng đang chạy?

Câu trả lời:


6

Điều này có vẻ như một lỗi trong chính ứng dụng. Nó nên có một tập lệnh bao bọc đặt chính xác bất kỳ LD_LIBRARY_PATHbiến cần thiết nào . Tuy nhiên, hãy cẩn thận khi viết một tập lệnh như vậy, vì bạn không muốn có bất kỳ phần trống nào của LD_LIBRARY_PATHchuỗi giữa các dấu hai chấm mà nó sử dụng làm dấu phân cách đường dẫn. Ví dụ: điều này có thể dẫn đến một đường dẫn xấu, nếu biến ban đầu trống (dẫn đến một chuỗi trống hàng đầu trước dấu hai chấm):

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

Vì vậy, khi thêm một đường dẫn, trước tiên bạn sẽ muốn kiểm tra chuỗi trống. Ví dụ: sử dụng mã shell:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app

2

Tạo một tệp mới /etc/ld.so.conf chứa:

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

Cập nhật bộ đệm bộ tải động bằng cách chạy:

ldconfig

0

Ngoài ra .bashrc, cũng đặt biến môi trường trong .profile. Tệp này sẽ được xử lý và tải bởi phiên của bạn, vì vậy nó sẽ ảnh hưởng đến mọi thứ đang chạy như người dùng của bạn. Ngoài ra: Tệp này cho biết nó không được Bash đọc nếu .bashrccó, nhưng dường như vẫn áp dụng (có lẽ vì Bash kế thừa phiên X từ nơi nó được bắt đầu). Mặc dù vậy, không có biến trong cả hai tệp.


Tôi đã thử tạo .profile cũng không có may mắn.
dwj

Tôi đã đọc ở đâu đó rằng có một tính năng "an toàn" của Ubuntu (Debian?) Không thể cho phép bạn đặt LD_LIBRARY_PATH khi khởi động do nó bị ghi đè sau khi tải .profile. Vẫn còn cách giải quyết.
alfC


0

đặt nó trong /etc/bash.bashrc ở gần đầu để thực hiện thay đổi toàn hệ thống khi khởi động.

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.