Đâ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.confkhô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.confsau đó 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 /libvà /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/sbinin 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 /libsẽ được tìm kiếm sau /usr/lib.
Vì vậy, thứ tự ld.sotìm kiếm đường dẫn cho các thư viện là gì? Tại sao được /libtì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?