как проверить, какую версию bfd я использую?

как проверить, какую версию bfd я использую?

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

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

решение1

BFD — это библиотека, используемая программами, составляющими Binutils GNU, в том числе ld, gold, и as, среди прочих. Обычно они входят в пакет с названиемbinutilsиbinutils-dev(Debian и друзья) илиbinutils-разработка(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.

Связанный контент