gcc
我在 Linux 机器上运行该命令时遇到了一个错误,在谷歌上搜索该错误时,我发现有人说,该错误已在bfd
库的较新版本中修复。进一步搜索后,我发现,这可能是构建时链接的 bfd
静态库,而不是共享动态库,但我对此并不确定。gcc
如何找出gcc
我所拥有的版本是bfd
静态使用的还是动态的,以及是什么版本的bfd
?
答案1
BFD 是组成 GNU Binutils 的程序使用的库,其中包括ld
、gold
和as
等等。它们通常包含在名为二进制实用程序和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 相关这一点很奇怪。