Đây không phải là một bản sao bởi vì điều này là đối phó với một đặc thù tôi nhận thấy khi tôi sử dụng /etc/ld.so.conf
.
Để có được các đường dẫn mà trình liên kết động tìm kiếm trong các thư viện, tôi chạy lệnh ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"
. Khi /etc/ld.so.conf
không có đường dẫn được liệt kê trong đó. Đầu ra từ lệnh trước là
/lib
/usr/lib
Tôi đoán rằng nó tìm kiếm /lib
đầu tiên và sau đó /usr/lib
. Khi tôi thêm một đường dẫn mới, chẳng hạn như /usr/local/lib
, /etc/ld.so.conf
sau đó làm lại /etc/ld.so.cache
, đầu ra từ ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"
trở thành
/usr/local/lib
/lib
/usr/lib
Tôi thấy điều này lạ bởi vì nếu tôi đúng rằng thứ tự mà các thư mục được liệt kê được tìm kiếm là từ trên xuống dưới, thì các thư mục bổ sung được tìm kiếm trước /lib
và /usr/lib
. Rằng các thư mục bổ sung được tìm kiếm trước các thư mục đáng tin cậy không phải là lạ, nhưng khi /lib
được tìm kiếm trước đó /usr/lib
, điều đó thật lạ vì /bin
& /sbin
được tìm kiếm sau /usr/bin
& /usr/sbin
in PATH
.
Ngay cả khi các đường dẫn được liệt kê bởi ldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g"
được tìm kiếm từ dưới lên trên, nó vẫn sẽ là một thứ tự sai lệch bởi vì các thư mục bổ sung sẽ được tìm kiếm sau những người đáng tin cậy trong khi /lib
sẽ được tìm kiếm sau /usr/lib
.
Vì vậy, thứ tự ld.so
tìm kiếm đường dẫn cho các thư viện là gì? Tại sao được /lib
tìm kiếm trước /usr/lib
? Nếu không, tại sao các thư mục bổ sung được tìm kiếm sau /lib
?