11

「通常の」ディレクトリツリーの外側(つまり、/custom/dirではなく/usr)にBoostをビルドする必要がありますが、これはそれほど問題ではありません。/に渡すだけで--prefix=/custom/path、そこに移動します。./runscript.sh./bjam

またはそう思った。

問題は、一部のBoostライブラリが相互に依存していることです。デフォルトのビルドプロセスを使用して./bootstrap.sh/を実行すると、Boostライブラリのライブラリ検索パスにパスが追加されていない./bjamようです。つまり、noが適用されます。つまり、他のBoostライブラリに依存するBoostライブラリは、実行時にそれらを見つけることができません。--prefix-Wl,-rpath

私のアプリケーション(これらのBoostライブラリのリンク)は、自分のコンパイララインに渡したにもかかわらず(つまり、Boostライブラリへの正しいパスがあることを再確認しました)、見つからないため、すでに段階的に/custom/path失敗しています。./configurelibboost_filesystem.solibboost_system.so-Wl,-rpath=/custom/path/boost/liblibboost_system.so

さて、設定LD_LIBRARY_PATHのような手間のかかる方法を避けるために、すべてのBoostライブラリがコンパイルされた他のBoostライブラリの適切な検索パスを持つようにBoostを構築したいと思います。しかし、そのための適切な手順を見つけることができませんでした。誰か助けてもらえますか?

4

2 に答える 2

12

最近、別のプロジェクトでこれを行う必要がありましたが、$ ORIGINを使用して、Boostの共有オブジェクトの場所を基準にしたパスを作成する必要がありました。

これには、bashコマンドラインで次のものが必要でした。

./b2 hardcode-dll-paths=true dll-path="'\$ORIGIN/../lib'" --prefix=$MY_PREFIX install

$ ORIGINを共有オブジェクトに正しく配置するための文字の魔法のコレクションを理解するには、少し試行錯誤が必要だったので、ここに答えを書くことで、他の人がこれをいじくり回さないようにできることを願っています。

于 2018-04-26T13:27:57.713 に答える
6

次のコマンドラインから、ビルド中にコンパイラとリンクのオプションを追加できます。

bjam hard-code-dll-path=true dll-path=/custom/path

これに関するBoostBuildドキュメントにFAQ項目があります(B2ドキュメントを参照)。

于 2010-08-07T22:29:15.400 に答える