Python nối thêm vào LD_LIBRARY_PATH
Lưu ý nhỏ này là về một trong những biến môi trường bị “lạm dụng” nhiều nhất trên các hệ thống Unix. LD_LIBRARY_PATH. Nếu được sử dụng đúng cách, nó có thể rất hữu ích, nhưng rất thường xuyên – không thể nói là hầu hết thời gian – mọi người áp dụng nó sai cách, và đó là họ đang chuốc lấy rắc rối Show Vì vậy, nó làm gì?LD_LIBRARY_PATH báo cho bộ tải liên kết động (ld. vì vậy - chương trình nhỏ này khởi động tất cả các ứng dụng của bạn) nơi tìm kiếm các thư viện chia sẻ động mà một ứng dụng được liên kết với. Có thể liệt kê nhiều thư mục, được phân tách bằng dấu hai chấm (. ), và danh sách này sau đó được tìm kiếm trước (các) đường dẫn tìm kiếm được biên dịch sẵn và các vị trí tiêu chuẩn (thường là /lib, /usr/lib,…) Điều này có thể được sử dụng cho
Nghe có vẻ rất hữu ích, vấn đề là ở đâu?Vâng, nó rất hữu ích – nếu bạn áp dụng nó theo cách mà nó được tạo ra, giống như ba trường hợp trên. Tuy nhiên, nó thường được sử dụng như một cái nạng để khắc phục sự cố mà lẽ ra có thể tránh được bằng các cách khác (xem bên dưới). Nó thậm chí còn trở nên tồi tệ hơn, nếu cái nạng này được áp dụng trên toàn cầu vào người dùng (hoặc hệ thống của. ) môi trường. các ứng dụng được biên dịch với các cài đặt đó sẽ phụ thuộc vào cái nạng này – và nếu cuối cùng nó bị lấy đi, chúng sẽ bắt đầu vấp ngã (i. e. không chạy được) Có thể bạn quan tâmNgoài ra còn có những hàm ý khác
Làm cách nào để kiểm tra thư viện động nào đã được tải?Có lệnh ldd, cho bạn biết thư viện nào cần thiết cho tệp thực thi được liên kết động, ví dụ:. g $ ldd /usr/bin/file linux-vdso.so.1 => (0x00007fff9646c000) libmagic.so.1 => /usr/lib64/libmagic.so.1 (0x00000030f9a00000) libz.so.1 => /lib64/libz.so.1 (0x00000030f8e00000) libc.so.6 => /lib64/libc.so.6 (0x00000030f8200000) /lib64/ld-linux-x86-64.so.2 (0x00000030f7a00000) Đây là chế độ xem 'tĩnh', vì ldd không giải quyết các phụ thuộc và thư viện sẽ được tải khi chạy, e. g. bởi một thư viện phụ thuộc vào người khác. Để có cái nhìn tổng quan về các thư viện được tải trong thời gian chạy, bạn có thể sử dụng lệnh pldd $ ldd /bin/bash linux-vdso.so.1 => (0x00007ffff63ff000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003108a00000) libdl.so.2 => /lib64/libdl.so.2 (0x00000030f8600000) libc.so.6 => /lib64/libc.so.6 (0x00000030f8200000) /lib64/ld-linux-x86-64.so.2 (0x00000030f7a00000) $ pldd 24362 24362: -bash /lib64/ld-2.12.so /lib64/libc-2.12.so /lib64/libdl-2.12.so /lib64/libtinfo.so.5.7 /usr/lib64/gconv/ISO8859-1.so /lib64/libnss_files-2.12.so Như bạn có thể thấy, có thêm hai. các tệp so được tải trong thời gian chạy, không có trong danh sách 'tĩnh' Note: pldd is originally a Solaris command, that usually is not available on Linux. However, there is a Perl-script available (and installed on our machines) that extracts this information from the /proc/ Làm cách nào để tránh những sự cố đó với LD_LIBRARY_PATH?Một câu trả lời rất đơn giản sẽ là. “Chỉ cần không sử dụng LD_LIBRARY_PATH. ” Câu trả lời thực tế hơn là, “bạn càng sử dụng ít, bạn càng có lợi” Dưới đây là danh sách các cách tránh LD_LIBRARY_PATH, lấy cảm hứng từ tài liệu tham khảo [1] bên dưới. Giải pháp tốt nhất là từ trên xuống, đến phương sách cuối cùng
Thật không may, một số ISV cung cấp phần mềm đặt cài đặt LD_LIBRARY_PATH chung vào cấu hình hệ thống trong quá trình cài đặt hoặc họ yêu cầu người dùng thêm các cài đặt đó vào cấu hình của họ. Chỉ cần nói không. Hãy thử nếu bạn có thể giải quyết vấn đề bằng cách khác, e. g. bằng cách tạo tập lệnh bao bọc hoặc yêu cầu nhà cung cấp khắc phục sự cố này Làm cách nào để thêm đường dẫn vào LD_LIBRARY_PATH?Hiển thị hoạt động trên bài đăng này. . Chuyển đến thư mục nhà và chỉnh sửa. Hồ sơ Place the following line at the end. export LD_LIBRARY_PATH= Lưu và thoát Thực hiện lệnh này. sudo ldconfig Làm cách nào để đặt LD_LIBRARY_PATH trong Windows?5. 1 Đường dẫn thư viện dùng chung . 1 cửa sổ. Để đặt biến môi trường PATH vĩnh viễn trên Windows, hãy làm. Bảng điều khiển → Hệ thống → Nâng cao → Biến môi trường. . 2 Linux systems. Set on command line when invoking MATLAB: [[email protected]:~]$ LD_LIBRARY_PATH=[$LD_LIBRARY_PATH:]/tpath/shared 3 MATLAB 7. 8+ trên Linux 64-bit LD_LIBRARY_PATH nghĩa là gì?Biến môi trường LD_LIBRARY_PATH báo cho các ứng dụng Linux, chẳng hạn như JVM, nơi tìm các thư viện dùng chung khi chúng nằm trong một thư mục khác với thư mục được chỉ định trong phần tiêu đề của chương trình
Đường dẫn và LD_LIBRARY_PATH là gì?Biến môi trường PATH chỉ định đường dẫn tìm kiếm cho lệnh, trong khi LD_LIBRARY_PATH chỉ định đường dẫn tìm kiếm thư viện dùng chung cho trình liên kết . Các giá trị mặc định ban đầu của PATH và LD_LIBRARY_PATH được chỉ định trong tệp bản dựng trước khi khởi động procnto. |