ทำไม nm ไม่แสดงสัญลักษณ์สำหรับ /lib/i386-linux-gnu/libc.so.6


31

ผมคาดว่าจะเห็นจำนวนของสัญลักษณ์ในlibc.so.6ไฟล์รวมทั้งprintf ฉันใช้เครื่องมือnmเพื่อค้นหาพวกเขา แต่มันบอกว่าไม่มีสัญลักษณ์ใน libc.so.6

คำตอบ:


54

nm -Dมันอาจจะมีสัญลักษณ์ประจำของมันปล้นและสิ่งที่เหลืออยู่คือสัญลักษณ์แบบไดนามิกซึ่งคุณจะได้รับด้วย


11

@PSkocik ตอบคำถามนี้ ฉันต้องการเพิ่มรายละเอียดเพิ่มเติม มีส่วนของสัญลักษณ์สองประเภทใน ELF: .symtabและ.dynsym(ดูรายละเอียดข้อกำหนดหลักพื้นฐานของฐาน Linux มาตรฐานหรือที่รู้จักกันในชื่อ LSB_5.0.0 ) .symtabสำหรับขั้นตอนการเชื่อมโยงของ lib ที่แชร์กัน เมื่อเชื่อมโยงเสร็จแล้ว.symtabส่วนไม่จำเป็นอีกต่อไป .dynsymส่วนนี้ประกอบด้วยสัญลักษณ์ที่สำคัญที่ควรจะได้รับการสืบค้นโดยลิงเกอร์แบบไดนามิกในเวลาทำงาน nmโดยค่าเริ่มต้นเท่านั้นทิ้งสัญลักษณ์ใน.symtabส่วน

LSB_5.0.0มาตรา 10.2.2.1“ ประเภทส่วนเอลฟ์” กล่าวว่า lib ที่ใช้ร่วมกันที่สอดคล้องกันควรมีอย่างใดอย่างหนึ่ง.symtabหรือ.dynsymทั้งสองอย่าง ในฐานะที่เป็นส่วนหนึ่งของไลบรารี ABI libc จะถูกแยกออกจาก.symtabข้อกำหนดที่สอดคล้องกัน


0

ค้นหาว่าเป็นวัตถุที่ใช้ร่วมกันหรือไฟล์ ASCII ปกติ หากเป็นวัตถุที่ใช้ร่วมกันคุณควรเห็น "วัตถุที่ใช้ร่วมกันของ ELB 32- บิต LSB"

file /lib/i386-linux-gnu/libc.so.6

libc.so.6เป็นวัตถุที่ใช้ร่วมกันอย่างล้นเหลือ
Gilles 'หยุดชั่วร้าย'

ฉันไม่เคยคิดในสภาพแวดล้อม Linux เมื่อพิจารณาถึงบางคนอาจได้สัมผัสไดเรกทอรีรูต ใช่โดยชื่อจะเห็นได้ชัดว่าเป็นวัตถุแชร์ และไม่เจ็บที่จะยืนยัน เมื่อคุณไม่ได้รับผลลัพธ์ที่คาดหวัง
jncc99
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.