0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux ライブラリ

Last updated at Posted at 2025-02-23

周辺知識

実行可能ファイル

/etc/ ディレクトリ

リンク

オブジェクトファイル(.o)やライブラリ(.a.so)を結合し、1つの実行可能ファイルやライブラリを作成するプロセスのこと

リンカ

リンクを実行するプログラム、またはツール。

静的リンカ(ld) と 動的リンカ(ld.so) がある。

ライブラリ

Linux のライブラリは C言語や C++ で作られることが多い。Rust、Python、Go などでも作成することができる。

ライブラリには 静的ライブラリ動的ライブラリ がある。

静的ライブラリ

  • lib<ライブラリ名>.a
    • オブジェクトファイル(.o)をまとめたもの
    • a:archive
  • コンパイル時 にリンクされる
    • ライブラリのコードが実行可能ファイルに埋め込まれる
  • ライブラリ変更時に再コンパイルが必要
  • 実行可能ファイルが大きくなる
C 言語でライブラリを利用する場合
$ gcc -c mylib.c -o mylib.o # ソースファイル mylib.c をコンパイルしてオブジェクトファイルを生成
$ ar rcs libmylib.a mylib.o # オブジェクトファイル mylib.o から 静的ライブラリを生成する
$ gcc main.c -o myapp -L/home/user/mylib -lmylib # -L で指定したディレクトリにある静的ライブラリを main.c にリンクしながらコンパイルして myapp として出力する

静的ライブラリのリンク

静的リンクはプログラムの実行前に行われる。静的なリンクを行うリンカには以下がある。

  • $ ld
    • ld の語源は link editor とされる
  • $ gcc
    • コンパイルもできるツール
    • 内部で ld が利用される

動的ライブラリ(共有ライブラリ)

動的ライブラリは 共有ライブラリ と呼ばれる。

  • lib<ライブラリ名>.so.<メジャーバージョン>.<マイナーバージョン>
    • so:shared object
  • 実行時 にリンクされる
    • 「ライブラリ」と「実行ファイル」は別ファイルで存在する
  • ライブラリの変更時に実行可能ファイルは再コンパイル不要
  • 実行可能ファイルを小さくできる

共有ライブラリのリンク

共有ライブラリのリンクはプログラムの実行時に行われるため、リンカはプログラムをロードする機能を併せ持つ。

共有ライブラリのリンカには以下がある。リンカ自体もプログラムである。

  • ld.so
  • ld-linux.so

共有ライブラリの置き場

リンカは

に配置された共有ライブラリから必要nものを探すため、それ以外のディレクトリに配置した場合には /etc/ld.so.conf に検索パスを追加する必要がある。

また 環境変数 $LD_LIBRARY_PATH にパスを追加する方法もある。

リンカがリンクを実行する際に、共有ライブラリを探す場所の優先順位は以下の通り。

  1. LD_LIBRARY_PATH に記載されたパス
  2. /etc/ld.so.cache
  3. /lib//usr/lib//etc/ld/so.conf に記載されたパス

キャッシュ

共有ライブラリはプログラム実行の度に必要となるため、/etc/ld.so.cache というバイナリファイルにキャッシュされ、再利用されることがある。

この /etc/ld.so.cache を更新するためには $ ldconfig コマンドを実行する必要がある。

$ ldconfig

/etc/ld.so.conf を基に、/etc.ld.so.cache を再構築する。

共有ライブラリを変更した場合に、変更前のキャッシュが使用されないようするために利用される。

$ ldd

list dynamic dependencies

実行ファイルが必要としている共有ライブラリを確認する
$ ldd 実行可能ファイル

参考

0
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?