ใช้คำสั่ง "ldd" ใน Linux

คำสั่ง ldd สามารถใช้เพื่อแสดงไลบรารีที่ใช้ร่วมกันได้ตามที่กำหนด

นี้จะเป็นประโยชน์สำหรับการทำงานออกเมื่อมีการพึ่งพาที่ขาดหายไปและสามารถใช้ในการแสดงรายการที่ขาดหายไปของฟังก์ชั่นและวัตถุ

ldd คำสั่งไวยากรณ์

นี่คือ ไวยากรณ์ ที่เหมาะสมเมื่อใช้คำสั่ง ldd:

ldd [OPTION] ... FILE ...

ต่อไปนี้เป็นสวิตช์คำสั่ง ldd ที่สามารถแทรกลงในตำแหน่ง [OPTION] ได้ ในคำสั่งดังกล่าว:

- ช่วยพิมพ์ความช่วยเหลือนี้และออก - พิมพ์ข้อมูลรุ่นของรุ่นและออก -d, - data-relocs relocations ข้อมูลกระบวนการ -r, - ฟังก์ชั่น - relocs ข้อมูลกระบวนการและ relocations ฟังก์ชั่น - u, - ยกเลิกการพิมพ์การอ้างอิงโดยตรงที่ไม่ได้ใช้ -v, --verbose พิมพ์ข้อมูลทั้งหมด

วิธีการใช้คำสั่ง ldd

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมจากคำสั่ง ldd:

ld -v / path / to / โปรแกรม / ปฏิบัติการ

ผลลัพธ์แสดงข้อมูลเวอร์ชันรวมทั้งเส้นทางและที่อยู่ไปยังไลบรารีที่ใช้ร่วมกันเช่น:

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 กับโปรแกรมที่ไม่น่าเชื่อถือเนื่องจากคำสั่งนี้อาจใช้งานได้จริง นี่เป็นทางเลือกที่ปลอดภัยกว่าที่แสดงให้เห็นถึงการพึ่งพาโดยตรงและไม่ใช่โครงสร้างพึ่งพาทั้งหมด: objdump -p / path / to / program | grep NEEDED

วิธีค้นหาเส้นทางไปยังแอพพลิเคชัน

คุณต้องให้เส้นทางแบบเต็มไปยังแอ็พพลิเคชันถ้าคุณต้องการค้นหาการอ้างอิงด้วย ldd ซึ่งคุณสามารถทำได้หลายวิธี

ตัวอย่างเช่นนี่คือวิธีหาเส้นทางไปยัง Firefox :

หา / -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 คือชื่อของไลบรารีและเลขฐานสิบหกคือที่อยู่ที่ห้องสมุดจะถูกโหลดลงในหน่วยความจำ

คุณจะสังเกตเห็นหลายบรรทัดอื่น ๆ ที่มีสัญลักษณ์ => ตามเส้นทาง นี่คือเส้นทางไปยังไบนารีทางกายภาพ เลขฐานสิบหกคือที่อยู่ที่ห้องสมุดจะถูกโหลด