1

Я столкнулся с ошибкой при запуске команды gcc на компьютере с Linux, и, обнаружив ошибку, я обнаружил, что, как говорят люди, она была исправлена в более новой версии библиотеки bfd . Продолжая поиск, я обнаружил, что bfd может быть статической библиотекой, с которой gcc был связан при сборке , а не общей динамической библиотекой, но я не уверен в этом.

Как узнать, использует ли версия gcc у меня есть, статически или динамически bfd и какую версию bfd?

1 ответ1

2

BFD - это библиотека, используемая программами, составляющими GNU Binutils, в том числе ld , gold и as . Обычно они входят в пакет binutils и binutils-dev (Debian и друзья) или binutils-devel (Fedora/RHEL). Вы можете запустить любую из вышеупомянутых программ с ключом -V чтобы получить номер версии. Вы можете использовать readelf чтобы перечислить их зависимости. Чтобы перечислить зависимости ld включая их типы:

readelf -d `which ld`

Dynamic section at offset 0xc900c contains 28 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libbfd-2.22-system.so]
 0x00000001 (NEEDED)                     Shared library: [libz.so.1]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

Я не очень знаком с внутренней работой GCC, но я бы сказал, что странно думать, что GCC когда-либо связан с BFD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .