PATH linux環境変数LD_LIBRARY_PATH詳細

3633 ワード

LD_LIBRARY_PATH詳細LD_LIBRARY_PATHはLinux環境変数名で、主に共有ライブラリ(ダイナミックリンクライブラリ)の検索時にデフォルトパス以外のパスを指定するために使用されます.
非常に多くのソフトウェアがroot権限を持っていないとインストールが困難になります.主に各種システムライブラリファイル、つまりLD_LIBRARY_PATHという環境変数の中のファイルのためです.たとえば、前に述べたlancetソフトウェアに必要なライブラリファイルは次のとおりです.
-llzma -lbz2 -lz -ldl -lpthread -lcurl -lcrypto -lbamtools
ls /usr/lib |grep libを使用して、自分が必要なライブラリファイルがあるかどうかを確認することができます.もちろん、他のライブラリファイルディレクトリも表示する必要があります.echo $LD_LIBRARY_PATHには、定義済みのライブラリファイル検索パスが7、8つ表示されます.
関数動的リンク.soを実行する場合、このファイルがデフォルトディレクトリの下/libおよび/usr/libにない場合、環境変数LD_LIBRARY_PATHを指定する必要があります.既存の環境変数に新しいパス名を追加する必要がある場合は、LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH(newdirsは新しいパス列)の例を次に示します.
export LD_LIBRARY_PATH=/export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH

一般エラー
/usr/bin/ld: cannot find -llzma
collect2: error: ld returned 1 exit status
make[1]: *** [lancet] Error 1
make[1]: Leaving directory `/home/jianmingzeng/biosoft/lancet/lancet/src'
cp: cannot stat `lancet': No such file or directory

実はgccエディタが私たちのシステムのliblzmaというライブラリファイルが見つからないので、私たちのLDです.LIBRARY_PATH定義のすべてのパスにはこのliblzmaというライブラリファイルはありません.
gccエディタが指定したライブラリファイルを見つけられるかどうかを確認する方法は、次のとおりです.
gcc -llzma --verbose

見つからないので、設定が必要です.
システムのライブラリファイルアドレスを見つける必要があります
実は、私たちの機械にはこのライブラリファイルがあるに違いありません.LDではありません.LIBRARY_PATH定義のすべてのパスの中で、簡単に次のように検索します.
locate liblzma 
/export/apps/anaconda2/2.4.1/lib/liblzma.a
/export/apps/anaconda2/2.4.1/lib/liblzma.la
/export/apps/anaconda2/2.4.1/lib/liblzma.so
/export/apps/anaconda2/2.4.1/lib/liblzma.so.5
/export/apps/anaconda2/2.4.1/lib/liblzma.so.5.0.5

私を解決するために、追加する必要があります.
export LD_LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LD_LIBRARY_PATH
export LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LIBRARY_PATH

LD_を変更する理由LIBRARY_PATHは?
実行時のダイナミックライブラリの検索パスの優先順位は:1.ターゲットコードをコンパイルする際に指定したダイナミックライブラリの検索パス;2.環境変数LD_LIBRARY_PATHによって指定された動的ライブラリ検索パス.3.プロファイル/etc/ld.so.confで指定したダイナミックライブラリ検索パス;4.デフォルトのダイナミックライブラリ検索パス/libおよび/usr/lib;
この順序はcompile gccでプログラム内に書かれており、通常ソフトウェアソースコードに付属するダイナミックライブラリはあまり多くありませんが、私たちの/libと/usr/libはroot権限だけで修正できます.また、プロファイル/etc/ld.so.confもrootのことなので、LD_LIBRARY_PATHを操作するしかありません.
永続的な追加
PATH:  実行可能プログラムの検索パス
現在の環境変数を表示するには、次の手順に従います.
echo $PATH
 設定:
方法一:export PATH=PATH:/XXXただし登録後失効
方法2:~/.bashrcまたは~/.bash_を修正するprofileまたはシステムレベルの/etc/profile
                  1.例えばexport PATH=/opt/ActivePython-2.7/bin:$PATHを追加
                  2. source .bashrc  (Sourceコマンドは「ポイントコマンド」とも呼ばれ、ポイント記号(.)です.sourceコマンドは、ログアウトして再ログインすることなく、変更した初期化ファイルを再実行するために通常使用されます.
 
 
LD_LIBRARY_PATH:ダイナミックライブラリの検索パス
設定:
方法1:export  LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXXただし登録後失効
方法2:  変更~/.bashrcまたは~/.bash_profileまたはシステムレベルの/etc/profile
                  1.例えばexport PATH=/opt/ActiveP/lib:$LD_を追加LIBRARY_PATH
                  2. source .bashrc  (Sourceコマンドは「ポイントコマンド」とも呼ばれ、ポイント記号(.)です.sourceコマンドは、ログアウトして再ログインすることなく、変更した初期化ファイルを再実行するために通常使用されます.
方法3:これはLD_を修正していませんLIBRARY_PATHしかし効果は同じようにダイナミックライブラリの検索を実現し、
                1./etc/ld.so.confの下に/usr/local/mysql/libを1行追加
                2.保存後にldconfigする(ldconfigコマンドの目的は、主にデフォルトのディレクトリ(/libおよび/usr/lib)および動的ライブラリプロファイル/etc/ld.so.confにリストされているディレクトリの下で、共有可能な動的リンクライブラリ(フォーマットは前述のlib*.so*)を検索し、動的読み込みプログラム(ld.so)を作成することです.必要な接続とキャッシュファイルです.キャッシュファイルのデフォルトは/etc/ld.so.cacheです.このファイルには、並べ替えられたダイナミックリンクライブラリの名前のリストが保存されます.)