/etc/ld.so.confนี้ไม่ได้เป็นที่ซ้ำกันเพราะนี่คือการจัดการกับความไม่ชอบมาพากลผมสังเกตเห็นเมื่อฉันใช้
ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"เพื่อให้ได้เส้นทางที่ใช้การค้นหาแบบไดนามิกในลิงเกอร์สำหรับห้องสมุดผมเรียกใช้คำสั่ง เมื่อ/etc/ld.so.confไม่มีเส้นทางที่ระบุไว้ในนั้น เอาต์พุตจากคำสั่งก่อนหน้าคือ
/lib
/usr/lib
ฉันคิดว่ามันค้นหาเป็นครั้งแรกแล้ว/lib /usr/libเมื่อฉันเพิ่มเส้นทางใหม่เช่น/usr/local/libไปยัง/etc/ld.so.confแล้วสร้างใหม่/etc/ld.so.cacheผลลัพธ์จากการldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"กลายเป็น
/usr/local/lib
/lib
/usr/lib
ฉันพบนี้แปลกเพราะถ้าผมถูกต้องว่าคำสั่งที่ระบุไว้ไดเรกทอรีที่มีการค้นหาในคือจากบนลงล่างแล้วไดเรกทอรีเพิ่มเติมที่จะค้นหาก่อนและ/lib /usr/libว่าไดเรกทอรีเพิ่มเติมที่จะค้นหาก่อนไดเรกทอรีที่เชื่อถือได้ไม่แปลกในตัวเอง แต่เมื่อ/libมีการค้นหาก่อน/usr/libที่แปลกเพราะ/binและ/sbinมีการค้นหาหลังจาก/usr/binและใน/usr/sbinPATH
แม้ว่าเส้นทางที่ระบุไว้โดยldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g"ถูกค้นจากด้านล่างสู่ด้านบนก็จะยังคงสั่งเบ้เพราะไดเรกทอรีเพิ่มเติมจะได้รับการสืบค้นหลังจากคนที่เชื่อถือได้ในขณะที่จะได้รับการสืบค้นหลัง/lib/usr/lib
ดังนั้นคำสั่งที่ld.soค้นหาพา ธ สำหรับห้องสมุดมีอะไรบ้าง ทำไม/libสืบค้นก่อน/usr/lib? ถ้ามันไม่ได้แล้วทำไมเป็นไดเรกทอรีเพิ่มเติมสืบค้นหลัง/lib?