ใช้ ldd คำสั่งเพื่อแสดงไลบรารีที่ใช้ร่วมกันที่จำเป็นโดยโปรแกรมใด ๆ ที่กำหนด - มีประโยชน์สำหรับการทำงานออกเมื่อมีการพึ่งพาที่ขาดหายไป คำสั่งยังแสดงรายการฟังก์ชันและออบเจกต์ที่ขาดหายไป
ldd คำสั่งไวยากรณ์
สังเกตไวยากรณ์ที่เหมาะสมสำหรับคำสั่ง ldd เพื่อหลีกเลี่ยงข้อผิดพลาด:
ldd OPTION … FILE …
ใช้สวิตช์คำสั่ง ldd ที่มีอยู่หนึ่งชุดหรือมากกว่านั้นแทรกลงใน OPTION จุดในคำสั่งดังกล่าว: - ช่วยเหลือ พิมพ์ความช่วยเหลือนี้และออก --version | พิมพ์ข้อมูลเกี่ยวกับรุ่นและออก -d, --data-relocs | ประมวลผล relocations ข้อมูล -r, - ฟังก์ชัน - relocs | ข้อมูลกระบวนการและ relocations ฟังก์ชั่น -u, - ไม่ได้ใช้ | พิมพ์การอ้างอิงโดยตรงที่ไม่ได้ใช้ - v, - verbose | พิมพ์ข้อมูลทั้งหมด ดำเนินการคำสั่งต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรม: $ ldd -v / path / to / program / executable
ผลลัพธ์แสดงข้อมูลเวอร์ชันรวมทั้งเส้นทางและที่อยู่ไปยังไลบรารีที่ใช้ร่วมกันเช่น: $ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
ถ้าไฟล์ SO ไม่อยู่เลยคุณสามารถค้นหาไลบรารีที่ขาดหายไปโดยใช้คำสั่งต่อไปนี้: $ ldd -d เส้นทางไป / โปรแกรม
ผลลัพธ์จะคล้ายกับต่อไปนี้: linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)
อย่าใช้คำสั่ง ldd กับโปรแกรมที่ไม่น่าเชื่อถือเนื่องจาก ldd อาจใช้งานได้จริง แทนที่จะใช้ทางเลือกที่ปลอดภัยกว่าที่แสดงการพึ่งพิงโดยตรงและไม่ใช่โครงสร้างพึ่งพาทั้งหมด: $ objdump -p / path / to / program | grep NEEDED คุณต้องระบุเส้นทางแบบเต็มสำหรับแอ็พพลิเคชันถ้าคุณต้องการค้นหาการอ้างอิงด้วย ldd ซึ่งคุณสามารถทำได้หลายวิธี ตัวอย่างเช่นนี่คือวิธีหาเส้นทางไปยัง Firefox: $ find / -name firefox
ปัญหาเกี่ยวกับคำสั่ง find ก็คือมันจะไม่เพียง แต่แสดงรายการปฏิบัติการ แต่ทุกที่ที่ Firefox ตั้งอยู่เช่นนี้: วิธีนี้เป็นบิตที่สำคัญเกินไปและคุณอาจต้องใช้คำสั่ง sudo เพื่อยกระดับสิทธิ์ของคุณมิฉะนั้นคุณอาจได้รับข้อผิดพลาดที่ได้รับอนุญาตจำนวนมาก ใช้คำสั่ง whereis เพื่อค้นหาเส้นทางของแอพพลิเคชันได้ง่ายขึ้น $ whereis firefox
เวลานี้ผลลัพธ์อาจมีลักษณะดังนี้: / usr / bin / Firefox / etc / Firefox / usr / lib / Firefox สิ่งที่คุณต้องทำตอนนี้เพื่อค้นหาไลบรารีที่ใช้ร่วมกันของ Firefox คือพิมพ์คำสั่งต่อไปนี้: $ ldd / usr / bin / firefox
ผลลัพธ์จากคำสั่งจะเป็นดังนี้: linux-vdso.so.1 (0x00007ffff8364000)libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)libc.so.6 => / usr/lib/libc.so.6 (0x00007feb9833c000)/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000) Linux-vdso.so.1 คือชื่อของไลบรารีและเลขฐานสิบหกคือที่อยู่ที่ห้องสมุดจะถูกโหลดลงในหน่วยความจำ คุณจะสังเกตเห็นหลายบรรทัดอื่น ๆ ที่มีสัญลักษณ์ => ตามเส้นทาง นี่คือเส้นทางไปยังไบนารีทางกายภาพ เลขฐานสิบหกคือที่อยู่ที่ห้องสมุดจะถูกโหลด วิธีการใช้คำสั่ง ldd
วิธีค้นหาเส้นทางไปยังแอพพลิเคชัน