30

LinuxでC++実行可能ファイルを作成しています。実行可能ファイルは、いくつかのBoostライブラリにリンクしています。

これは、バイナリを実行しようとしたときの出力です。

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ./testfgci 
./testfgci: error while loading shared libraries: libboost_system.so.1.45.0: cannot open shared object file: No such file or directory

次に、バイナリでlddを実行して、依存関係を確認します。

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ldd testfgci 
    linux-gate.so.1 =>  (0x00380000)
    libboost_system.so.1.45.0 => not found
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00b50000)
    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x005f6000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0099a000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x001b3000)
    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00110000)
    /lib/ld-linux.so.2 (0x00ea2000)

liboos_system.sl.1.45.0SOが見つからない理由がわかりません。今日は少し前にうまく構築しました。誰か説明できますか?

4

4 に答える 4

32

ライブラリが見つかりません。

ライブラリはデフォルトでで検索され/lib/usr/libディレクトリはで指定され/etc/ld.so.confます。

通常、システムライブラリ(パッケージマネージャーを介してインストールした場合はboostなど)はにありますが/usr/lib、おそらくそうではありません。

ブーストライブラリはシステムのどこにありますか?自分でコンパイルしましたか?この場合、LD_LIBRARY_PATH環境変数を使用して、ライブラリが配置されているディレクトリでライブラリを検索するようにダイナミックリンカに指示する必要があります。

LD_LIBRARY_PATH="your/boost/directory" ./testfgci

とにかく、パッケージマネージャーを使用してBoostライブラリをインストールすることをお勧めします。これにより、作業が大幅に簡素化されます。

于 2011-01-03T00:53:21.307 に答える
29

これは古いものですが、実行ldconfigしてldキャッシュを再構築できます。そうすれば、を更新する必要はありませんLD_LIBRARY_PATH

于 2012-03-02T03:19:30.247 に答える
7

Ubuntu(そしてDebianだと思います)のユーザー向けにメモを追加したかっただけです。これらのシステムには、消去するセキュリティ「機能」がありLD_LIBRARY_PATHます。これは機能しません:

または/etc/environemntまたは:~/.profile_~/.bash_profile

export LD_LIBRARY_PATH=/usr/local/boost_1_54_0/stage/lib:$LD_LIBRARY_PATH

に対しては機能し~/.bashrcますが、パスはこの特定のインタラクティブシェルに対してのみ設定されます。つまり、makeegemacsまたはから呼び出すと、ランチャーからではなくシェルからeclipse起動しない限り、機能しません。emacs

これは私のために働いたものです:

echo -e "\n/usr/local/boost_1_54_0/stage/lib" | sudo tee -a /etc/ld.so.conf 
sudo ldconfig
于 2013-07-09T12:54:34.713 に答える
1

peoroが彼の答えで述べたように、パッケージマネージャーを使用してインストールします。たとえば、Ubuntu 18.04を使用している場合は、

sudo apt install libboost-filesystem1.65.1
于 2021-03-10T13:12:46.063 に答える