web-dev-qa-db-ja.com

新しくインストールされたBoostのコンパイラインクルードパスとリンカーライブラリパスを追加する方法

RHEL 5.2とBoost 1.33がインストールされています。 boost_1_44_0.tar.bz2をダウンロードしました。そしてそれを構築しました。完了するとそれは示しました:

The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    /home/dfe/Archive/boost_1_44_0

The following directory should be added to linker library paths:

    /home/dfe/Archive/boost_1_44_0/stage/lib
  1. 上記のインクルードパスを追加するにはどうすればよいですか?
  2. 「rpm -q boost」を実行すると、boost-1.33.1-10.el5と表示されます。バージョン1.44をインストールしたのに、なぜですか。
  3. Boostの最新バージョンをインストールするより良い方法はありますか?
18
Nav

まず、既存のブーストrpmを削除しました

rpm -e boost-1.33.1-10.el5

「エラー:「ブースト」は複数のパッケージを指定しています」というメッセージが表示されます

次に試しました:

rpm -e --allmatches boost

(「boost」と入力したのか「boost-1.33.1-10.el5」と入力したのか覚えていません)

依存関係のあるパッケージが表示されました。やった:

rpm -e [packagename1]
rpm -e [packagename2]

等々そしてそれから:

rpm -e --allmatches

これは私のシステムからブーストを完全に消去しました。

次に、tar -xvjf boost_1_44_0.tar.bz2を使用してboost_1_44_0.tar.bz2を抽出し、bootstrap with:

./bootstrap.sh

次にbjamを次のように実行しました:

./bjam install

それでおしまい! Boostがシステムにインストールされ、プログラムのコンパイル中にリンカーオプションを指定する必要がありませんでした。わーい!ここで、「rpm -q boost」コマンドは、パッケージがインストールされていないことを示しています。

11
Nav

考えられる理由の1つは、「make install」ではなく、単に「make」することです。したがって、「./ b2」ではなく「Sudo ./b2 install」を実行する必要があります

linuxシステムにソフトウェアをインストールする手順は常に存在します

問題は、2つのステップを実行し、最後の1つのステップが実行しなかったことです。

13
user2716834

次のように、パスを.bashrcまたは.profile(またはボートをフロートするもの)に追加します。

export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib"
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0"
9
der_michael

アプリケーションのビルドに使用するメイクファイルにこれらのディレクトリを含める必要があります

CC -I/home/dfe/Archive/boost_1_44_0 -L/home/dfe/Archive/boost_1_44_0/stage/lib yourprogram.cpp

-Iオプション#includeファイルを検索するディレクトリのリストにdirを追加します。

-Lオプションは、リンカーがライブラリーを検索するディレクトリーのリストにdirを追加します

CCはSunコンパイラです...

9
jRJ