コンパイルしてインストールしようとしています。宣伝する1.54 CentOSのソースコード。
ドキュメントは非常にシンプルで、インターネット上で多数のチュートリアルを利用できます(1)(2)(サム)。これが私がしたことです:
wget http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz
tar -xzvf boost_1_54_0.tar.gz
cd boost_1_54_0
./bootstrap.sh --prefix=/usr/local
./b2 install --with=all
このブーストを正しくコンパイルしてインストールすると、/usr/local/lib
すべてが問題ないようです。
これでブーストが必要な他のソフトウェアをコンパイルしましたが、gcc
すべてがうまくいきます。私の理解によれば、gcc
必要なライブラリを見つける限り、すべてがうまくいくでしょう。
しかし、今問題は、コンパイルされたバイナリを実行すると次のエラーが発生することです。
./myProgram
./myProgramm: error while loading shared libraries: libboost_system.so.1.54.0: cannot open shared object file: No such file or directory
なぜ図書館が見つからないのですか?
また、以下を試しました。
ldconfig
locate boost
[...]
ただし、ブーストライブラリが見つかりません。手動でパスを見つけましたが、次のようになります。
/usr/local/lib/libboost_system.so.1.54.0
また、シンボリックリンクを作成しましたが、/usr/lib
問題は解決されませんでした。
どんなアイデアがありますか?どうですか?
ベストアンサー1
プログラムをコンパイルするときに追加する必要があります-Wl,-R/usr/local/lib
。LDFLAGS
-R
リンカオプション(ランタイムリンカのパスを指定するために使用されます) - に渡すように-Wl
指示します。gcc
ld
共有ライブラリーの場合は、リンカーがコンパイル中にそのライブラリーを見つけるようにする必要があります。そして実行時(フラグ-L
と参照-R
)
あなたはそれを使用することができます
$ ldd myProgramm
ランタイムリンカーパスが正しく設定されていることを確認してください。つまり、必要な共有ライブラリが見つかるかどうか、またはプログラムの起動時にロードする共有ライブラリが何であるかを確認してください。