LD_LIBRARY_PATHとsystemctl
1271 ワード
一般的に、もし自分で
ここでは、環境変数
このとき、私たちの
しかし、
その後、対応する
.so
ファイルをコンパイルしたら、私たちはそれが/usr/lib
あるいは/usr/lib64
の中のライブラリのようにグローバルに呼び出されることを望んでいます.もちろん簡単な方法はそれをそれらのフォルダの中に移動することです.時にはこれらのファイルが一緒に混同されることを望んでいません.彼たちが自分のフォルダを持って、どのように処理するかを望んでいます.ここでは、環境変数
PATH
を思い浮かべますが、主に実行可能なファイルに使用されます.例えば、java
、php
コマンドをグローバルに設定するなど、.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
の構成が必要です.