Boostの共有ライブラリ(.so
)ファイル。実行してBoostをインストールしました
Sudo apt-get install libboost-all-dev
ヘッダーファイルと静的ライブラリが正しくインストールされます。共有ライブラリもインストールされますが、シンボルは含まれていません。
$ nm /usr/lib/x86_64-linux-gnu/libboost_filesystem.so
nm: /usr/lib/x86_64-linux-gnu/libboost_filesystem.so: no symbols
これはどのように可能ですか、どうすれば修正できますか?これはあいまいな問題であることを理解していますが、apt-get clean
そして、すべてのブーストdebianパッケージを完全に削除してパージし、再インストールすると、常に同じ結果が得られます。 Boostをソースからコンパイルし、別のバージョンをインストールするのは理想的ではありません。
Ubuntuリポジトリからインストールされたほとんどの共有ライブラリには、シンボルが含まれていません。通常、パッケージはデバッグシンボルを使用して構築されます。デバッグシンボルは削除され、gdb
またはその他のデバッガーで使用するために個別にインストール可能なパッケージに配置されます。
共有ライブラリのダイナミックシンボルテーブル(リンク可能なパブリックシンボル)のシンボルを表示する場合は、nm
の代わりにnm -D
を使用します。
他のライブラリ(libcudart.so)でも同じ問題が発生しました。静的な「.a」ライブラリを使用して解決しました。
私がしたこと:
$ find /usr/local/cuda-7.0 -type f -name libcudart\*
directory/libcuda_static.a
$ compiler -Ldirectory -lcudart_static
これが誰かの助けになることを願っています