79
59

More than 5 years have passed since last update.

CentOS7でldconfigを使って共有ライブラリを追加する

Last updated at Posted at 2019-04-17

概要

CentOS7では、デフォルトで/libと/usr/lib以下のファイルは、共有ライブラリとして含まれています。
それ以外のディレクトリのライブラリを追加したい場合は、以下のいずれかの方法で設定する必要があります。

  1. 特定のユーザーのみが使えるようにする方法
  2. システム全体で永続的に使いたい場合

OpenSSLのインストール

今回は例として、OpenSSLを共有ライブラリに追加するため、インストールをします。

参考:CentOS7にOpenSSL1.1.1をインストール

特定のユーザーのみが使えるようにする方法

LD_LIBRARY_PATHは、/etc/ld.so.confで定義されたパスよりも優先されます。

設定したいディレクトリ以下のライブラリを全て参照するようになります。

$ LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib; export LD_LIBRARY_PATH

設定したいディレクトリが複数ある場合は、:で区切って設定します。

$ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib; export LD_LIBRARY_PATH

ちなみに、LD_LIBRARY_PATHの設定を以下で定義しても反映されません。

  • $HOME/.profile
  • /etc/profile
  • /etc/environment

参考:EnvironmentVariables - Community Help Wiki

LD_LIBRARY_PATH についての説明から抜粋
Note: You can only set this environment variable inside an interactive shell. Since Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH cannot be set in $HOME/.profile, /etc/profile, nor /etc/environment files. You must use /etc/ld.so.conf.d/*.conf configuration files. See Launchpad bug #366728 for more information.

参考:LD_LIBRARY_PATH を設定しても反映されないことがある

システム全体で永続的に使いたい場合

追加するライブラリ

今回は例として、以下のopensslのライブラリ群を追加します。

$ sudo ls -l /usr/local/openssl-1.1.1/lib
total 10432
drwxr-xr-x 2 root root      39 Apr 17 04:12 engines-1.1
-rw-r--r-- 1 root root 5599274 Apr 17 04:12 libcrypto.a
lrwxrwxrwx 1 root root      16 Apr 17 04:12 libcrypto.so -> libcrypto.so.1.1
-rwxr-xr-x 1 root root 3370584 Apr 17 04:12 libcrypto.so.1.1
-rw-r--r-- 1 root root 1019068 Apr 17 04:12 libssl.a
lrwxrwxrwx 1 root root      13 Apr 17 04:12 libssl.so -> libssl.so.1.1
-rwxr-xr-x 1 root root  685240 Apr 17 04:12 libssl.so.1.1
drwxr-xr-x 2 root root      61 Apr 17 04:12 pkgconfig

共有ライブラリとして認識されているパスの確認

以下コマンドで読み込まれているパスを確認できます。

$ sudo ldconfig -p

ライブラリ追加前の状態を確認します。ssl関係のライブラリは/lib64のもののみ認識されています。

$ sudo ldconfig -p | grep libssl
        libssl3.so (libc6,x86-64) => /lib64/libssl3.so
        libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10

ライブラリを追加する

システム全体に永続的にライブラリを追加したい場合は、/etc/ld.so.confに定義します。
実際にファイルの中を見てみると、以下のようになっています。

$ sudo cat /etc/ld.so.conf
include ld.so.conf.d/*.conf

/etc/ld.so.confで直接定義することもできますが、/etc/ld.so.conf.dの下にファイルを作成して定義することを推奨します。 

/etc/ld.so.conf.d/openssl-1.1.1.confを作成して、以下を定義します。

/etc/ld.so.conf.d/openssl-1.1.1.conf
/usr/local/openssl-1.1.1/lib

キャッシュファイルを更新

OSはライブラリを検索する際に、/etc/ld.so.confを直接参照するのではなく、/etc/ld.so.cacheというキャッシュファイルを参照するため、以下のコマンドでこのキャッシュファイルを更新します。

$ sudo ldconfig

ライブラリが追加されたことを確認

以下コマンドで/usr/local/openssl-1.1.1/lib以下のライブラリが追加されたことを確認できます。

$ sudo ldconfig -p | grep libssl
        libssl3.so (libc6,x86-64) => /lib64/libssl3.so
        libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10
+       libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1/lib/libssl.so.1.1
+       libssl.so (libc6,x86-64) => /usr/local/openssl-1.1.1/lib/libssl.so

関連記事

参考

79
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
59