
Encontré un error al ejecutar el gcc
comando en una máquina Linux y, al buscar en Google el error, encontré que la gente dice que se ha solucionado en una revisión más reciente de la bfd
biblioteca. Al seguir buscando, descubrí que bfd
puede ser una biblioteca estática a la que gcc
se vinculó cuando se creó, no una biblioteca dinámica compartida, pero no estoy seguro de eso.
¿Cómo saber si la gcc
versión que tengo se utiliza bfd
de forma estática o dinámica y de qué versión bfd
?
Respuesta1
BFD es la biblioteca utilizada por los programas que componen los Binutils de GNU, que incluyen ld
, gold
y as
, entre otros. Generalmente vienen en un paquete llamadobinutilsybinutils-dev(Debian y amigos) obinutils-devel(Fedora/RHEL). Puede ejecutar cualquiera de los programas antes mencionados con un -V
interruptor para obtener su número de versión. Puede utilizar readelf
para enumerar sus dependencias. Para enumerar las dependencias ld
incluyendo sus 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]
No estoy muy familiarizado con el funcionamiento interno de GCC, pero diría que es extraño pensar que GCC alguna vez esté vinculado con BFD.