Tôi có thể sử dụng ld.so.cache của riêng tôi không?


13

ldconfig có hai lựa chọn thú vị:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

Tôi đã thử sao chép /etc/ld.so.confvào thư mục nhà riêng của mình và chỉnh sửa nó để bao gồm các đường dẫn đến thư viện địa phương của tôi, /home/syockit/local/usr/libv.v.

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

và sau đó, để xác nhận rằng các thư viện được lưu trữ, tôi đã chạy

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

và nó bao gồm tất cả các thư viện của tôi trên đầu trang bao gồm cả thư viện hệ thống.

Bây giờ, tôi muốn có trình liên kết mặc định sử dụng hai. Nhưng trong man ld.so, tôi thấy không đề cập đến việc có thể sử dụng tùy chỉnh .confhoặc .cache. Vì vậy, điểm của hai lựa chọn trên ldconfiglà gì?

Câu trả lời:


8

Tôi nghĩ rằng câu trả lời cho câu hỏi của bạn là không, mặc dù bạn có thể hoàn thành điều tương tự theo những cách khác.

trong man ld.so, tôi không thấy đề cập đến việc có thể sử dụng tùy chỉnh .conf hoặc .cache

Đúng, nhưng có đề cập đến $LD_LIBRARY_PATH--library-path, trước đây thường hữu ích hơn.

điểm của hai lựa chọn trên ldconfiglà gì?

Vì vậy, bạn có thể tạo bộ đệm mà không cần ghi đè lên hệ thống, và không phải sử dụng hệ thống.


... chỉ cho cái quái gì đó? Hay là cho pháp y hệ thống?
syockit

1
Nó có thể là hình ảnh hệ thống hoặc môi trường chroot, v.v.
goldilocks

5

/etc/ld.so.confchỉ được đọc bởi ldconfig(chương trình tạo bộ đệm), không phải bởi ld.so(trình tải động). Bạn có thể thay đổi vị trí của tệp cấu hình nếu bạn muốn tạo bộ đệm khác với mặc định của hệ thống.

/etc/ld.so.cacheđược đọc bởi ld.sovà bạn không thể làm cho nó đọc từ một vị trí khác. Tuy nhiên, việc chuyển một vị trí đầu ra khác nhau có thể rất hữu ích ldconfig. Trường hợp sử dụng phổ biến nhất có lẽ là môi trường chroot . Bạn có thể sử dụng ldconfig -r /some/rootđể chạy ldconfigtrên một gốc thay thế và đặt đầu ra bất cứ nơi nào bạn muốn (bên trong hoặc bên ngoài gốc đó). Bạn sẽ cần phải phát ra đầu ra tại /some/root/etc/ld.so.cachehoặc sao chép nó ở đó sau. Có những trường hợp sử dụng khá mơ hồ khác, ví dụ nếu bạn muốn chạy ldconfignhư một người dùng không có đặc quyền (người không thể ghi vào /etc/ld.so.cache) và sau đó di chuyển tệp vào vị trí sau.

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.