私はgccを使って外部ライブラリを使ってC ++アプリケーションを開発しています。たとえばlibtiff
、libpng
。私はこれを得て、apt-get
すべてがうまくいきます。
しかし、スタンドアロンとファイルのペア.a
で.so
lib
提供される別のサードパーティのライブラリを追加しました。.so
に保存されている別のものを見つけ/usr/lib/x86_64-linux-gnu
、そこに新しいものをコピーしました.so
。私のアプリケーションを正常に接続しましたが、error while loading shared libraries: libThirdParty.so: cannot open shared object file: No such file or directory
メッセージ " "と一緒に実行できませんでした。
私は何を見逃していますか?
ベストアンサー1
アプリケーションがライブラリを見つける方法は2つあります。
- 環境
LD_LIBRARY_PATH
変数これをコロンで区切って、インクルードライブラリへのパスに設定します。最初に空でないことを確認し(echo $LD_LIBRARY_PATH
)、そうであれば拡張します(例:)LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foo/lib:/home/myself/lib
。これはテストに適しており、sudoユーザーでない場合はroot
永続的に使用したい場合はシェル初期化に追加できます。.zshrc
しかし、もちろん、変数を解析してファイルを検索するのは遅くなるため、通常は2番目のアプローチを好みます。 - ライブラリをコピーしたら、
ldconfig
ルートとして使用するか、sudo
標準ライブラリパス(および/lib
または/usr/lib
および)と同様に、設定ファイルのパスとライブラリへの引数で指定さ/lib64
れたパスを検索し、システム全体のライブラリキャッシュを更新します。/usr/lib64
/etc/ld.so.conf
ldconfig
ld.so