$ nm /lib/x86_64-linux-gnu/libc-2.31.so
nm: /lib/x86_64-linux-gnu/libc-2.31.so: нет символов
$
Shell
$ nm /lib/x86_64-linux-gnu/ld-2.31.so
nm: /lib/x86_64-linux-gnu/ld-2.31.so: нет символов
$
А между тем, в одной из этих библиотек (в какой не знаю, видите, нигде ничего нет) находится тело функции printf() (или puts(), я уж не знаю во что она там преобразуется). Ели динамически присоединяемую библиотеку кропать на коленке и самому в ней определять какие-нибудь функции- то да, соответствующие символы (имена функций) в ней будут.
Как же тогда работает простой helloword? Debian 11. Спасибо, кто откликнется.
Динамические библиотеки хранят глобальные метки в отдельном разделе. Так что в отличие от статической библиотеки можно смело ее очистить от стандартных меток с помощью утилиты strip
В разделяемых библиотеках эта информация хранится в динамической таблице символов, nm по умолчанию туда не смотрит. nm -D /lib/x86_64-linux-gnu/libc-2.31.so