Я пытаюсь выяснить, как получить доступ к идентификатору сборки, сгенерированному компоновщиком во время выполнения.
С этой страницы https://linux.die.net/man/1/ld
Когда я создаю тестовую программу, такую как:
% gcc test.c -o test -Wl,--build-id=sha1
Я вижу, что идентификатор сборки присутствует в двоичном файле:
% readelf -n test
Displaying notes found in: .note.gnu.build-id
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Build ID: 85aa97bd52ddc4dc2a704949c2545a3a9c69c6db
Я хотел бы напечатать это во время выполнения.
РЕДАКТИРОВАТЬ: Предположим, вы не можете получить доступ к файлу elf, из которого был загружен запущенный процесс (разрешения, встроенная / нет файловой системы и т. Д.).
РЕДАКТИРОВАТЬ: принятый ответ работает, но компоновщик не обязательно должен размещать переменную в конце раздела. Если бы был способ получить указатель на начало раздела, это было бы более надежным.