
Linux マシンでコマンドを実行するとバグが発生しましたgcc
。バグを Google で検索すると、bfd
ライブラリの新しいリビジョンで修正されたという報告がありました。さらに検索してみると、共有の動的ライブラリではなく、ビルド時にリンクされたbfd
静的ライブラリである可能性があることがわかりgcc
ましたが、確信はありません。
gcc
所有しているバージョンがbfd
静的に使用されているか動的に使用されているか、また のバージョンはどれかを確認するにはどうすればよいでしょうかbfd
?
答え1
ld
BFDは、、、、gold
などを含むGNUのBinutilsを構成するプログラムで使用されるライブラリですas
。これらは通常、と呼ばれるパッケージで提供されます。バイナリユーティリティそしてbinutils-dev(Debianとその仲間) またはbinutils-devel(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 と関連していると考えるのは奇妙だと思います。