LD_LIBRARY_PATHとsystemctl

1271 ワード

一般的に、もし自分で.soファイルをコンパイルしたら、私たちはそれが/usr/libあるいは/usr/lib64の中のライブラリのようにグローバルに呼び出されることを望んでいます.もちろん簡単な方法はそれをそれらのフォルダの中に移動することです.時にはこれらのファイルが一緒に混同されることを望んでいません.彼たちが自分のフォルダを持って、どのように処理するかを望んでいます.
ここでは、環境変数PATHを思い浮かべますが、主に実行可能なファイルに使用されます.例えば、javaphpコマンドをグローバルに設定するなど、.soライブラリにも対応する環境変数LD_LIBRARY_PATHがあります.デフォルトでは、この変数は空の値なので、一部のフォルダのライブラリをグローバルに呼び出すことができるようにしたい場合は、この変数にパスを割り当てることができますiceライブラリをコンパイルしたと仮定します.このディレクトリは/opt/ice/lib64にあります.
#         ,           
vi /etc/profile

#        
export LD_LIBRARY_PATH=: /opt/ice/lib64

#     
source /etc/profile

このとき、私たちのiceライブラリはグローバルに呼び出されます.
しかし、systemctlを介してサービスを開始すると、systemctl start php-fpmのように、php-fpmのサービスはLD_LIBRARY_PATHという変数を読み込まないことがわかります.つまり、iceライブラリはロードされません.この場合、別の方法で
#       ,       ice    
vi /etc/ld.so.conf.d/ice-x86_64.conf

#     
/opt/ice/lib64

#  root       ,     
ldconfig

その後、対応するsystemctlコマンドを再起動すると有効になります.ここで、LD_LIBRARY_PATHに設定されている内容はsystemctlコマンドに影響しません.ld.so.confの構成が必要です.