Приложение отображается как DYN (Общий объектный файл)

У меня есть приложение в моей системе Ubuntu, созданное с CMake, с помощью add_executable сказуемое. Он работает нормально сам по себе, однако, readelf показывает это как DYN (Shared object file) который обычно применяется к разделяемым библиотекам:

root@3cced4f9860d build# readelf -h ./unittest/unittests            
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - GNU
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x3e3660
  Start of program headers:          64 (bytes into file)
  Start of section headers:          19112592 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         31
  Section header string table index: 28

Кто-нибудь знает, почему это может произойти?

1 ответ

Решение

В современных дистрибутивах исполняемые файлы по умолчанию компилируются в независимый от позиции код (см., Например, этот вопрос), что вызывает инструменты (fileи т. д.), чтобы думать, что они являются общими. Я предлагаю вам сообщить об ошибке в соответствующих инструментах, чтобы они выдали более удобный для пользователя результат.

Другие вопросы по тегам