Чому 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призначений для кроку зв’язку самої спільної ліб. Як тільки посилання закінчено, .symtabрозділ більше не потрібен. У цьому .dynsymрозділі містяться важливі символи, які повинні шукати динамічний лінкер під час виконання. nmза замовчуванням у .symtabрозділі скидаються лише символи .

LSB_5.0.0 Розділ 10.2.2.1 , "Типи розділів ELF", говорить, що відповідна спільна вікно повинна мати або обидва, .symtabабо .dynsymне такі. Як частина бібліотеки ABI, libc викреслюється з .symtabвідповідності специфікаціям.


0

Дізнайтеся, чи це спільний об'єкт, або звичайний файл ASCII. Якщо це спільний об'єкт, ви повинні побачити "ELF 32-розрядний спільний об'єкт LSB"

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

libc.so.6це, очевидно, спільний об'єкт.
Жил "ТАК - перестань бути злим"

Я ніколи не припускаю в середовищі Linux. Зважаючи на те, що хтось міг би торкнутися кореневих каталогів. Так, по імені це, очевидно, об’єкт спільного доступу. І це не завадить перевірити; коли ви не отримуєте очікуваного результату.
jncc99
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.