
我在 Linux 機器上運行該命令時遇到了一個錯誤gcc
,在谷歌搜尋該錯誤時我發現人們說它已在庫的較新版本中修復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 有連結是很奇怪的。