CentOSにカスタムブーストバージョンをインストールする方法は?

CentOSにカスタムブーストバージョンをインストールする方法は?

コンパイルしてインストールしようとしています。宣伝する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/libLDFLAGS

-Rリンカオプション(ランタイムリンカのパスを指定するために使用されます) - に渡すように-Wl指示します。gccld

共有ライブラリーの場合は、リンカーがコンパイル中にそのライブラリーを見つけるようにする必要があります。そして実行時(フラグ-Lと参照-R

あなたはそれを使用することができます

$ ldd myProgramm

ランタイムリンカーパスが正しく設定されていることを確認してください。つまり、必要な共有ライブラリが見つかるかどうか、またはプログラムの起動時にロードする共有ライブラリが何であるかを確認してください。

答え2

回避策として、環境変数を使用して実行可能ファイルの実行の前にプレフィックスを指定し、LD_LIBRRAY_PATHライブラリを含むディレクトリへのパスを提供できると思います.so

はい

$ LD_LIBRARY_PATH=/usr/local/lib ./myProgram

しかし、問題のアプリケーションをコンパイルするために使用した方法は間違っているようです。より具体的にコンパイル方法を確認する必要がありますmyProgram

答え3

CentOS 7 に Boost 1.54 バージョンをインストールするには、次のコマンドを使用します。

sudo wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo

次のリンクからlib64icu42-4.2.1-1mdv2010.0.x86_64.rpmをダウンロードしてください。 ftp://fr2.rpmfind.net/linux/Mandriva/official/2010.0/x86_64/media/main/release/lib64icu42-4.2.1-1mdv2010.0.x86_64.rpm

RPMのインストール:

sudo rpm -ivh lib64icu42-4.2.1-1mdv2010.0.x86_64.rpm

必要なブーストライブラリのバージョンをインストールします。

sudo yum install boost-devel-1.54.0

それはすべてです。良い一日になろう!

リダイレクトリンク: https://www.rpmfind.net/linux/rpm2html/search.php?query=libicuuc.so.42()(64ビット)

関連情報