เมื่อฉันเรียกใช้กระบวนการที่เชื่อมโยงไปยังไลบรารีที่ใช้ร่วมกันที่รันไทม์ (เชื่อมโยงเมื่อกระบวนการเริ่มต้นไม่ได้เชื่อมโยงในภายหลังด้วยdlload()
) มันจะค้นหา.so
ไฟล์shared library ( ) อื่น ๆ ที่นอกเหนือจากที่LD_LIBRARY_PATH
ใด?
พื้นหลัง:
ฉันมีรหัส C ++ ที่ฉันเขียนซึ่งใช้ห้องสมุดบุคคลที่สามโดยเฉพาะ ฉันได้ติดตั้งไลบรารีและรวบรวมรหัสของฉันบนแพลตฟอร์มที่แตกต่างกันสองแห่งทั้ง Ubuntu แต่รุ่นที่แตกต่างกันและรุ่น gcc ที่แตกต่างกันเช่นกัน ไลบรารีถูกคอมไพล์และติดตั้งจากซอร์สและอยู่ใน/usr/local/lib
ทั้งสองแพลตฟอร์ม เมื่อฉันรวบรวมรหัสของฉันฉันจะเชื่อมโยงกับpkg-config --libs
พารามิเตอร์สำหรับห้องสมุดบุคคลที่สามและฉันได้รับการตรวจสอบแล้วว่าได้pkg-config --libs
ผลลัพธ์เหมือนกันทั้งสองแพลตฟอร์ม
โค้ดของฉันคอมไพล์ได้สำเร็จทั้งสองแพลตฟอร์มและLD_LIBRARY_PATH
ไม่ได้ถูกกำหนด (หรือกำหนดเป็นค่าว่าง:) ""
บนทั้งสองแพลตฟอร์ม อย่างไรก็ตามเมื่อฉันเรียกใช้บน platoform มันทำงานได้ดีและอื่น ๆ ฉันได้รับข้อผิดพลาดนี้:
error while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory
สนุกพอคนที่ไม่ทำงานคือUbuntu และ gcc รุ่นใหม่ : /
ดังนั้นฉันจึงพยายามที่จะหาวิธีการทำงานของคนที่สามารถค้นหาห้องสมุดเพื่อที่ฉันจะทำให้คนที่ขาดหายไปสามารถค้นหาห้องสมุดได้ในลักษณะเดียวกัน (เช่นไม่มีการตั้งค่าLD_LIBRARY_PATH
)
ปรับปรุง:
นี่คือผลลัพธ์ของฉันจาก cat /etc/ld.so.conf.d/*
... กับระบบที่ทำงาน (เก่ากว่า):
/usr/lib/mesa
/usr/lib32/mesa
/usr/lib/alsa-lib
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
... ในระบบที่เสีย (ใหม่กว่า):
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa
/usr/local/lib/libthrift-0.9.0.so
แต่มันก็ยังให้ข้อผิดพลาดerror while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory
... มีเหตุผลที่จะไม่รับไดเรกทอรีจาก/etc/ld.so.conf.d/*.conf
ไหน?
sudo ldconfig -v
ตามที่แนะนำด้านล่าง ldd /path/to/your/application
ถ้ามันยังไม่ทำงานปรับปรุงคำถามของคุณด้วยการส่งออกของ
/etc/ld.so.conf.d/*.conf
แต่ฉันไม่แน่ใจ