7

libboost-devを介してインストールしapt-get、に配置しました/usr/lib

/usr/lib$ ls | grep boost
libboost_filesystem.so.1.46.1
libboost_iostreams.so.1.46.1
libboost_serialization.so.1.46.1
libboost_system.so.1.46.1
libboost_thread.so.1.46.1
libboost_wserialization.so.1.46.1

しかし、を使用するソースをコンパイルしようとすると、boost_threadそれでもエラーが発生しました。

$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -llibboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -lboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status

インストールしてリンクする正しい方法は何libboostですか?

4

3 に答える 3

11

私が気づいたことの1つは、libboost_thread.soがないことです。バージョン管理された1.46.1ファイルがありますが、通常、ライブラリは、装飾されていない名前でバージョン管理されたコピーへのシンボリックリンクを作成します。それはそうではないかもしれませんが、それは私が気づいたことの1つです。(これは通常、インストーラーによって行われます。)–オマハ

これがポイントだと思います。libboostそれは私が間違った方法でインストールしたことを意味します。実際、私はインストールしただけlibboost-devです:

sudo apt-get install libboost-dev 

しかし、私がすべきことは次のとおりです。

sudo apt-get install libboost-dev libboost1.46-doc libboost-date-time1.46-dev ibboost-filesystem1.46-dev libboost-graph1.46-dev libboost-iostreams1.46-dev libboost-math1.46-dev libboost-program-options1.46-dev libboost-python1.46-dev libboost-random1.46-dev libboost-regex1.46-dev libboost-serialization1.46-dev libboost-signals1.46-dev libboost-system1.46-dev libboost-test1.46-dev libboost-thread1.46-dev libboost-wave1.46-dev

(または、私の特定のケースでは、libboost-system1.46-dev libboost-thread1.46-dev少なくともインストールします)

.aそして、それらを正しくインストールすると、とが存在するはず.soです/usr/lib

/usr/lib$ ls | grep boost
libboost_date_time.a
libboost_date_time-mt.a
libboost_date_time-mt.so
libboost_date_time.so
libboost_date_time.so.1.46.1
libboost_filesystem.a
libboost_filesystem-mt.a
... and so on ...
于 2012-06-21T12:07:40.450 に答える
2

Ubuntu 16.04では、パッケージの名前は次のとおりです。libboost-all-dev(libboost-dev-allではありません)

于 2017-05-18T18:02:41.910 に答える
1

コメントボックスはこの提案の引用を台無しにしたので、私は正しい引用を得るための答えとしてそれを投稿しています。

以前は、Ubuntuにはそれらすべてをインストールするためのメタパッケージlibboost-dev-allがありました。しかし、今は見つからないようです。これが役立つかもしれないコマンドラインです:

sudo apt-get install `apt-cache search libboost | \
    grep -- -dev | \
    grep -v '[12]\.[0-9]' | \
    awk '{ print $1; }'`

https://github.com/imvu-open/istatd/ファイルinstall-boost-dev.shから取得)

于 2015-02-12T17:40:13.637 に答える