2013-07-18 28 views
15

私はubuntu 12.04を使用しています。私がbash端末を起動するたびに、コマンドを入力してEnterを押すたびに、次のメッセージが表示されます。エラー:ld.so:オブジェクトLD_PRELOADをプリロードできません:無視

ERROR: ld.so: object '/usr/lib/liblunar-calendar-preload.so' from LD_PRELOAD cannot be preloaded: ignored.

これは変です。 環境変数LD_PRELOADは何のために使われていますか?そしてシーンの後ろには何が起こっていますか?

ありがとうございました。

+1

一部のライブラリは、使用時にのみロードされます。 LD_PRELOAD変数を使用すると、プログラムの実行前にライブラリをロードするかどうかに関係なく、ライブラリをロードできます。 – hetepeperfan

+0

@hetepeperfanそして、私がコマンドを入力するたびに、私もメッセージを受け取ります。それは何を説明すべきか? – lulyon

+0

カスタムビルドされた 'bash'を使用していますか? – devnull

答えて

7

リンカーは、いくつかの環境変数を取ります。一つはman 8 ld-linuxからLD_PRELOAD

です:

LD_PRELOAD 
      A whitespace-separated list of additional, user-specified, ELF 
      shared libraries to be loaded before all others. This can be 
      used to selectively override functions in other shared 
      libraries. For setuid/setgid ELF binaries, only libraries in 
      the standard search directories that are also setgid will be 
      loaded. 

したがって、リンカーは他の人がロードされる前にLD_PRELOAD変数にリストされているライブラリをロードしようとします。

変数内にプリロードできないライブラリが表示される場合があります。 LD_PRELOADが設定されている.bashrcまたは.bash_profile環境を調べ、変数からそのライブラリを削除します。

2

ありがとうございました。私は今問題を解決したと思う。

LD_PRELOADはいくつかのライブラリを設定するためのものですので、ldが "liblunar-calendar-preload.so"というLD_PRELOADでプリロードしているライブラリを確認します。このパスは "/ usr/lib/liblunar-calendar-preload.so "と似ていますが、前者とは異なるバージョンのliblunar-calendar-preload-2.0.soもあります。

次に、LD_PRELOADは "/usr/lib/liblunar-calendar-preload.so"のままにしておいて、おそらくliblunar-calendar-preload.soが2.0のバージョンに更新されたと思います。したがって、プリロードライブラリ名は最新バージョンに更新されませんでした。環境変数を変更しないようにするに

が、私は「は/ usr/libの」パスの下にシンボリックリンクを作成

sudo ln -s liblunar-calendar-preload-2.0.so liblunar-calendar-preload.so 

は、その後、私はbashのを再起動し、エラーがなくなっています。

+1

しかし、すべてのプログラムのために、あなたはそのライブラリがロードされるのを開始します。変更は大きく、非常に大きく、プログラムはそのライブラリを必要としません。したがって、必要がない場合は、追加のワークロードを作成します。 – hetepeperfan

+0

@hetepeperfanそれを指摘してくれてありがとう。しかし、私はそれが問題だとは思わない。なぜなら、ライブラリは、起動するすべてのプログラムの前ではなく、bashシェルが起動するときだけ読み込まれるからである。 liblunar-calendar-preload.soは、lunar-calendar-gtkプログラムによって使用されます。私はlunar-calendar-gtkがliblunar- calendar-preload.soをプリロードせずに円滑に動作するとは思わない。 – lulyon

7

あなたはプログラムlunar-calendar-gtkが起動されている場合のみと、あなたはこの適用できるかどうかライブラリがロードされていることを確認するには:

をあなたが使用してコマンドを付けることによって、コマンドごとの環境変数を設定それ:あなたは、元のreferenceeをreplaceing、シェルスクリプトでこれを入れて、このシェルスクリプトにlunar-calendar-gtkシンボリックリンクを作成することを選択できます

$ LD_PRELOAD="liblunar-calendar-preload.so" printenv "LD_PRELOAD" 
liblunar-calendar-preload.so 
$ printenv "LD_PRELOAD" 
$ 

。これにより、元のアプリケーションが実行されるたびにライブラリがロードされます。

オリジナルの名前をlunar-calendar-gtkに変更する必要があります。これは、アンインストールやアップグレードで問題が発生する可能性があるため、面白くない可能性があります。しかし、Skypeの以前のバージョンでは役に立ちました。

0

これは、ソフトウェアを削除してコンピュータを再起動したときに発生する可能性があります。

今日私はいくつかのソフトウェアをインストールし、apt remove xxxapt-get auroremoveを実行すると、このエラーが発生します。私のコンピュータでそれをgrepするとき、私はこれを見つけることができません。このエラーは、どのコマンドを実行しても発生します。しかし、私はコンピュータを再起動した後、それはなくなった。

1

入力したパスによってエラーが発生したことを示します。 LD_PRELOADコマンドで、エラーヒントのようにパスを変更します。

/usr/lib/liblunar-calendar-preload.so 
関連する問題