web-dev-qa-db-ja.com

Saucy:Boost共有ライブラリにはシンボルが含まれていません

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をソースからコンパイルし、別のバージョンをインストールするのは理想的ではありません。

4
user3293204

Ubuntuリポジトリからインストールされたほとんどの共有ライブラリには、シンボルが含まれていません。通常、パッケージはデバッグシンボルを使用して構築されます。デバッグシンボルは削除され、gdbまたはその他のデバッガーで使用するために個別にインストール可能なパッケージに配置されます。

共有ライブラリのダイナミックシンボルテーブル(リンク可能なパブリックシンボル)のシンボルを表示する場合は、nmの代わりにnm -Dを使用します。

3
Mike Miller

他のライブラリ(libcudart.so)でも同じ問題が発生しました。静的な「.a」ライブラリを使用して解決しました。

私がしたこと:

$ find /usr/local/cuda-7.0 -type f -name libcudart\*
directory/libcuda_static.a
$ compiler -Ldirectory -lcudart_static

これが誰かの助けになることを願っています

0
user9869932