Linuxの読み込み中にエラーの共有ライブラリ:できないオープンな共有オブジェクトファイル:なファイルまたはディレクトリ
-
20-08-2019 - |
質問
プログラムの一部である、Xenomai試験スイートクロス集計Linux PCへのLinux+Xenomaiアームツールチェーン.
# echo $LD_LIBRARY_PATH
/lib
# ls /lib
ld-2.3.3.so libdl-2.3.3.so libpthread-0.10.so
ld-linux.so.2 libdl.so.2 libpthread.so.0
libc-2.3.3.so libgcc_s.so libpthread_rt.so
libc.so.6 libgcc_s.so.1 libstdc++.so.6
libcrypt-2.3.3.so libm-2.3.3.so libstdc++.so.6.0.9
libcrypt.so.1 libm.so.6
# ./clocktest
./clocktest: error while loading shared libraries: libpthread_rt.so.1: cannot open shared object file: No such file or directory
編集: OKなかった通知の.1末のファイル名を指定します。いることを意味する。
解決
更新
などを書き込んで下がtrueのとして一般についてお答え共有ライブラリだと思い最も頻度の高い原因はこのようなメッセージがでまっ設置パッケージがインストールしていない"-devをインストール"バージョンのパッケージです。
りのさるとしあきだいえっとしない添い寝のお子様はありません libpthread_rt.so.1
その上します。するので,それを再設定や再構築を行うことにより、図書館でインストールも提供 libpthread_rt.so.1
.
一般に数後ます。でのバージョン番号んくうsymlinks互いのバージョン1.1のlibfoo.だから,実際にファイルlibfoo.います。1.0symlinks foo.なので、foo.います。1を指libfoo.います。1.0になります。びる場合がありますバージョン1.1を取り外さずにその他についlibfoo.います。1.1libfoo.います。1libfoo.いう点になるには、任意のコードが必要な正確なバージョンをご利用libfoo.います。1.0ファイルです。コードだけを頼りにしてバージョン1APIでは、なかなかできないのでケアの場合は1.0や1.1を指定しまlibfoo.います。1.として orip 指摘されるので、ここで説明してく http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html.
お場合、 が かsymlinking libpthread_rt.so.1
へ libpthread_rt.so
.の保証を与えることなの休憩コードとはテレビのディナーです。
他のヒント
あなたのライブラリーは、動的ライブラリです。 あなたはそれが実行時にそれを見つけることができ、オペレーティング・システムに伝える必要があります。
これを行うには、 私たちは、これらの簡単な手順を実行する必要があります。
(1)あなたはそれを知っていない場合は、ライブラリが置かれている場所を検索します。
sudo find / -name the_name_of_the_file.so
(2)動的ライブラリパス環境変数の存在をチェックする(LD_LIBRARY_PATH
)
$ echo $LD_LIBRARY_PATH
に表示するものがない場合(あなたがしたい場合やない)、デフォルトのパス値を追加します。
$ LD_LIBRARY_PATH=/usr/local/lib
(3)私たちは、それをエクスポートし、欲望のパスを追加し、アプリケーションを試してみます。
パスはpath.so.something
があるディレクトリでなければならないことに注意してください。
だから、/my_library/path.so.something
が<=>であれば、それはする必要があります:
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_library/
$ export LD_LIBRARY_PATH
$ ./my_app
ソース: http://www.gnu.org/ソフトウェア/ GSL /マニュアル/ html_node /共有-Libraries.htmlする
ここであなたが試すことができますいくつかのソリューションがあります:
にldconfig
AbiusXが指摘したように:あなたはちょうど今のライブラリをインストールしている場合、あなたは、単に実行する必要があるかもしれ ldconfigをでます。
sudo ldconfig
のldconfigは、最新のに必要なリンクおよびキャッシュを作成します コマンドで指定されたディレクトリで見つかった共有ライブラリ /etc/ld.so.confファイルでは、信頼できるディレクトリ内の行、 (/ libと/ usr / lib)。
通常、あなたが新しいライブラリをインストールするときに、あなたのパッケージマネージャは、このの世話をする、常にではないが、それはあなたの問題ではない場合でも、それは、ldconfigを実行するために傷つけることはありません。
devパッケージまたは間違ったバージョン
それでも解決しない場合は、、私はまた、ポールの提案をチェックアウトし、「-dev」バージョンを探しますライブラリの。多くの図書館は、DEVと非-devのパッケージに分割されています。あなたはそれを探すために、このコマンドを使用することができます:
apt-cache search <libraryname>
あなたは、単にインストールし、ライブラリの間違ったバージョンを持っている場合は、このも助けることができます。いくつかのライブラリは、Pythonは、例えば、同時に異なるバージョンで公開されています。
ライブラリの場所
あなたがそれを見つけられませんでした右のパッケージがインストールされていることを確認し、ldconfigをしている場合は、は、それだけで非標準のディレクトリであってもよいです。デフォルトでは、ldconfigのは中/lib
記載されている/usr/lib
、/etc/ld.so.conf
、ディレクトリ内を検索し、$LD_LIBRARY_PATH
。あなたのライブラリがどこかにある場合は、ldconfig
に独自の行にディレクトリを追加するか、libraryname
、または~/.bashrc
にライブラリを移動するには、ライブラリのパスを追加します。そして、実行<=>。
のライブラリがどこにあるかを調べるには、これを試してください:
sudo find / -iname *libraryname*.so*
(あなたのライブラリーの名前で<=>交換)
あなたが<=>ルートを移動した場合、あなたはそれはあなたがログインするたびに実行されますので、あなたの<=>ファイルにそれを置くことになるでしょう。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library
私は
、私は与えることによってそれを解決することができ、同様のエラーが発生しましたsudo ldconfig -v
この情報がお役に立てば幸いです。
あなたが中にライブラリパスを指定することを確認する必要があります リンクあなたの.cファイルをコンパイルするときます:
のgcc -Iは/ usr / local /含まxxx.c -o XXX -Lは/ usr / local / libに -Wl、-Rは/ usr / local / libの
-Wl、-R部分はまた、ライブラリーを探すために結果のバイナリを伝えます 実行時には/ usr / local / libには/ usr / libに/
の1を使用しようとする前に、それはあなたを助けることを願っています。
linux.orgのリファレンスページは力学を説明したが、その背後にある動機のいずれかを説明していない: - (
はそのために、日リンカーとライブラリを見ます
はまた、シンボルバージョン管理(GNU拡張)を使用すると、単一のライブラリーに存在する同じ機能の複数の互換性のないバージョンを持つことができますので、「外部のバージョン管理」は、Linux上で大部分が時代遅れであることに注意してください。この拡張許可のglibcは、同じ外部バージョンを持っている:。libc.so.6
最後の10年間
あなたのLD_LIBRARY_PATH
ファイル
~/.bashrc
を、追加してみてください
LD_LIBRARY_PATH=path_to_your_library
これは動作します!
cd /home/<user_name>/
sudo vi .bash_profile
最後にこれらの行を追加します。
LD_LIBRARY_PATH=/usr/local/lib:<any other paths you want>
export LD_LIBRARY_PATH
別の可能な解決策は、状況に応じています。
:あなたはlibpthread_rt.so.1がlibpthread_rt.soと同じであることがわかっている場合は、は、次の方法でシンボリックリンクを作成することができます
ln -s /lib/libpthread_rt.so /lib/libpthread_rt.so.1
次にls -l /lib
今シンボリックリンクとそれが指すが表示されるはずです。
私は、同様のエラーを持っていたし、それは〜/ .bashrcの中でLD_LIBRARY_PATHを与えることで解決しませんでした。 どのような私の問題を解決することは.confファイルを追加し、それをロードすることです。 ターミナルに行くAN suコマンドであること。
gedit /etc/ld.so.conf.d/myapp.conf
このファイルには、あなたのライブラリパスを追加し、保存(例:は/ usr / local / libに)。 あなたは、パスを有効にするには、次のコマンドを実行する必要があります:
ldconfig
あなたの新しいライブラリパスを確認します:
ldconfig -v | less
これはあなたのライブラリファイルが表示されている場合は、あなたが行ってもいいです。
またこのエラーは起動時に自Eclipse CDT Linux x86.
この問題を修正するには:
- Eclipse:
として実行->Run設定->環境
のパスを設定する
LD_LIBRARY_PATH=/my_lib_directory_path
インストールしてみてくださいsudoのlib32z1
須藤はapt-getをlib32z1インストール
私がしなければならなかったすべてが実行されました。
sudo apt-get install libfontconfig1
私は/usr/lib/x86_64-linux-gnu
にあるフォルダにあった、それは完全に働いています。
、動的ライブラリ(.dllファイル)へのパスは、PATH環境変数で定義する必要があります。
あなたがUNIX、あなたの動的ライブラリへのパスでアプリケーションを実行している場合は、(.soという)LD_LIBRARY_PATH環境変数で定義する必要があります。
のエラーが発生したとしてシステムの参照できない図書館のファイルを挙げられる。次のようにしてください:
- 走
locate libpthread_rt.so.1
サイトのすべてのファイルがその名前です。ましょう仮パスが/home/user/loc
. - コピーを実行
cd home/USERNAME
.置き換えユーザー名の名前を現在のアクティブなユーザーを実行したいのファイルです。 - 走
vi .bash_profile
のののLD_LIBRARY_PATH
パラメータには、直前の.
, 追加のライン/lib://home/usr/loc:.
.ファイルを保存します。 - 近端末を再起動します。べきである。
私はこのエラーを得たと私は考えてあなたのその同じ理由
error while loading shared libraries: libnw.so: cannot open shared object
file: No such file or directory
これを試してみてください。ファイル上の修正権限の
cd /opt/Popcorn (or wherever it is)
chmod -R 555 * (755 if not ok)
chown -R root:root *
「sudoをsuが」ファイルシステムのアクセス許可を取得します。
私はこのエラーを得たと私は考えてあなたのその同じ理由
共有ライブラリのロード中にエラーが:libnw.so:共有開くことができません。 オブジェクトファイル:そのようなファイルやディレクトリはありません。
これを試してみてください。ファイルの修正権限ます:
cd /opt/Popcorn (or wherever it is)
chmod -R 555 * (755 if not ok)
同様の問題は、ここで見つける: https://bugzilla.redhat.com/show_bug。 CGI?ID = 1456202こちら 私が言及した解決策を試してみたし、それが実際に動作します。
前の質問でのソリューションが動作する可能性があります。しかし、私は、これはそれを修正する簡単な方法だと思います。
パッケージを再インストールしてみlibwbclient
Fedoraでます:
dnf reinstall libwbclient