web-dev-qa-db-ja.com

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

CentOSのソースから boost 1.54をコンパイルしてインストールしようとしています。

ドキュメントは非常に単純明快で、インターネットにはたくさんのチュートリアルがあります( 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

これはboostを/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へのシンボリックリンクを作成しようとしましたが、これでも修正されません。

何か案は?私に何ができる?

4
Afr

追加する必要があります-Wl,-R/usr/local/libをプログラムのコンパイル時にLDFLAGSに変更します。

-Rはリンカーオプションです(実行時リンカーパスを指定するため)--Wlgccldに渡すように指示します。

共有ライブラリを使用する場合は、コンパイル時にリンカーがそれらを見つけられるようにする必要がありますand実行時(cf. flags -Lおよび-R)。

使用できます

$ ldd myProgramm

runtime-linkerパスが正しく設定されているかどうか、つまり、プログラムの開始時に必要な共有ライブラリを見つけることができるか、どの共有ライブラリをロードするかを確認します。

5
maxschlepzig

回避策として、実行可能ファイルの実行に環境変数LD_LIBRRAY_PATHをプレフィックスとして付け、.soライブラリを含むディレクトリへのパスを与えることができると思います。

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

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

1
slm

以下のコマンドを使用して、CentOS 7にインストールされた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

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

Sudo yum install boost-devel-1.54.0

それでおしまい。すてきな一日を!

rpmリンク: https://www.rpmfind.net/linux/rpm2html/search.php?query=libicuuc.so.42()(64bit)

0
AnnapoorniS