LoginSignup
0
0

More than 1 year has passed since last update.

共有ライブラリについて

Posted at

ec2にsqliteの新バージョンをインストールした後、pathを通す際に出てきた共有ライブラリというワードにて調べてみました。

そもそもライブラリとは

 ・よく使う機能をまとめたもの
 ・プログラム(lsコマンド等の実行ファイル)から利用できるようにしたもの

 ※実行ファイル
  ┗/usr/bin/ls等

ライブラリの種類

 ・静的ライブラリ
  ┗実行ファイル内に埋め込まれているライブラリ
  ┗実行ファイルごとにライブラリが重複してしまうデメリットがある
  ┗拡張子「lib○○.a」
  
 ・共有ライブラリ
  ┗実行ファイル内に埋め込まないライブラリ
  ┗左記などに配置されている: /usr/lib64
  ┗拡張子「lib○○.so.○○」

実行ファイルが必要とする共有ライブラリを確認する方法

 ・lddコマンドを使用する

root:~/environment (master) $ ldd  /usr/bin/ls
        linux-vdso.so.1 (0x00007ffe847f0000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f400b368000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f400b15f000)
        libacl.so.1 => /lib64/libacl.so.1 (0x00007f400af56000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f400abab000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f400a947000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f400a743000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f400b58f000)
        libattr.so.1 => /lib64/libattr.so.1 (0x00007f400a53e000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f400a320000)

 ※実行ファイルの場所を確認するコマンド
  ┗which ls

■その他の共有ライブラリの検索の仕方
 ・下記に共有ライブラリのpathが載っている
  ┗/etc/ld.so.conf
   ┗中身→include ld.so.conf.d/*.conf

root:~/environment (master) $ ls -l  /etc/ld.so.conf.d
total 24
-rw-r--r-- 1 root root  26 May 25  2021 bind-export-x86_64.conf
-rw-r--r-- 1 root root  19 Feb 13  2020 dyninst-x86_64.conf
-r--r--r-- 1 root root 324 Mar  2 18:41 kernel-4.14.268-205.500.amzn2.x86_64.conf
-r--r--r-- 1 root root 324 Mar 30 01:15 kernel-4.14.273-207.502.amzn2.x86_64.conf
-r--r--r-- 1 root root 324 Apr 27 21:11 kernel-4.14.276-211.499.amzn2.x86_64.conf
-rw-r--r-- 1 root root  17 Dec 17 17:17 mysql-x86_64.conf
root:~/environment (master) $ 

root:~/environment (master) $ cat  /etc/ld.so.conf.d/mysql-x86_64.conf 
/usr/lib64/mysql

毎回共有ライブラリを参照するのは非効率

 ・上記の理由により、実際には下記キャッシュを参照する
  ┗ /etc/ld.so.cache

 ・共有ライブラリを追加した場合、/etc/ld.so.confの編集が必要
 ・また「ld.so.conf」に基づき、「ld.so.cache」 を変更する必要がある
  ┗ldconifgを実行

その他の共有ライブラリの追加方法

 ・環境変数である、LD_LIBRARY_PATHを使用

$export LD_LIBRARY_PATH="/hogehoge/lib"

 ・ログイン時に実行されるようにbash_profile内に組み込む

$export LD_LIBRARY_PATH="/hogehoge/lib">> ~/.bash_profile

 ・最後に読み込み忘れずに

$source ~/.bash_profile
0
0
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
0
0