
Encontrei um bug ao executar o gcc
comando em uma máquina Linux e, pesquisando o bug no Google, descobri que as pessoas dizem que ele foi corrigido em uma revisão mais recente da bfd
biblioteca. Pesquisando mais, descobri que bfd
pode ser uma biblioteca estática à qual gcc
estava vinculada quando foi construída, não uma biblioteca dinâmica compartilhada, mas não tenho certeza disso.
Como descobrir se a gcc
versão que tenho está usando bfd
estática ou dinamicamente e qual versão bfd
?
Responder1
BFD é a biblioteca usada pelos programas que compõem o Binutils do GNU, que incluem ld
, gold
, e as
, entre outros. Eles geralmente vêm em um pacote chamadobinutilsebinutils-dev(Debian e amigos) oubinutils-devel(Fedora/RHEL). Você pode executar qualquer um dos programas mencionados acima com um -V
switch para obter o número da versão. Você pode usar readelf
para listar suas dependências. Para listar as dependências ld
incluindo seus tipos:
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]
Não estou muito familiarizado com o funcionamento interno do GCC, mas diria que é estranho pensar que o GCC esteja alguma vez ligado ao BFD.