Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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

関連記事

参考

Esfahan
WEB系出身。現在はビッグデータの基盤構築、ETLなどがメイン。 / YouTubeで料理チャンネルやってます → https://www.youtube.com/channel/UCDnYBh2TtUAfQ0Z-tl0jTyw
https://www.youtube.com/channel/UCDnYBh2TtUAfQ0Z-tl0jTyw
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした