Linuxの読み込み中にエラーの共有ライブラリ:できないオープンな共有オブジェクトファイル:なファイルまたはディレクトリ

StackOverflow https://stackoverflow.com/questions/480764

質問

プログラムの一部である、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.1libpthread_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.
この問題を修正するには:

  1. Eclipse:

    として実行->Run設定->環境

  2. のパスを設定する

    LD_LIBRARY_PATH=/my_lib_directory_path
    

インストールしてみてくださいsudoのlib32z1

  

須藤はapt-getをlib32z1インストール

私がしなければならなかったすべてが実行されました。

sudo apt-get install libfontconfig1

私は/usr/lib/x86_64-linux-gnuにあるフォルダにあった、それは完全に働いています。

あなたは、Microsoft Windows上でアプリケーションを実行している場合は、

、動的ライブラリ(.dllファイル)へのパスは、PATH環境変数で定義する必要があります。

あなたがUNIX、あなたの動的ライブラリへのパスでアプリケーションを実行している場合は、

(.soという)LD_LIBRARY_PATH環境変数で定義する必要があります。

のエラーが発生したとしてシステムの参照できない図書館のファイルを挙げられる。次のようにしてください:

  1. locate libpthread_rt.so.1 サイトのすべてのファイルがその名前です。ましょう仮パスが /home/user/loc.
  2. コピーを実行 cd home/USERNAME.置き換えユーザー名の名前を現在のアクティブなユーザーを実行したいのファイルです。
  3. vi .bash_profile ののの LD_LIBRARY_PATH パラメータには、直前の ., 追加のライン /lib://home/usr/loc:..ファイルを保存します。
  4. 近端末を再起動します。べきである。

私はこのエラーを得たと私は考えてあなたのその同じ理由

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top