HOMEサンプル問題・例題解説101試験の例題と解説102.3 共有ライブラリを管理する

101試験の例題と解説

102.3共有ライブラリを管理する

今回は、101試験の出題範囲から「102.3 共有ライブラリを管理する」についての例題を解いてみます。

■例題
Linux上で実行したいプログラムが必要としている共有ライブラリを調べるために実行するコマンドを選びなさい。

1. ldd
2. ldconfig
3. lsld
4. lsmod
5. modprobe


※この例題は実際のLinuC試験とは異なります。

解答と解説

答えは 1. ldd です。

Linux上で動作するプログラムには、コンパイル時にライブラリを組み込んでおく「静的リンク」と、実行時にライブラリを読み込む「動的リンク」の2種類が存在します。現在では多くの場合、動的リンクの形でプログラムは作成(ビルド)されています。

静的リンクと違い、動的リンクは実行される時に必要となる共有ライブラリがシステムに導入されていないといけないので、標準的でない共有ライブラリを使用するようなプログラムの時には特に、そのプログラムが必要とする共有ライブラリを調べられなくてはいけません。そのために使用するのがlddコマンド
です。

○lddコマンドの実行例(※結果は環境により異なります)
$ ldd /bin/ls
linux-gate.so.1 => (0xbfffe000)
librt.so.1 => /lib/tls/librt.so.1 (0x486af000)
libacl.so.1 => /lib/libacl.so.1 (0xb7fee000)
libselinux.so.1 => /lib/libselinux.so.1 (0x4836d000)
libc.so.6 => /lib/tls/libc.so.6 (0x481a5000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x48340000)
/lib/ld-linux.so.2 (0x4818b000)
libattr.so.1 => /lib/libattr.so.1 (0xb7fea000)

$ ldd /usr/bin/ssh
linux-gate.so.1 => (0xbfffe000)
libcrypto.so.4 => /lib/libcrypto.so.4 (0xb7ede000)
libutil.so.1 => /lib/libutil.so.1 (0xb7eda000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7eca000)
libnsl.so.1 => /lib/libnsl.so.1 (0xb7eb3000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7e85000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7e77000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7e62000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7dfd000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7ddc000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7dd9000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7dc6000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7c9a000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c95000)
/lib/ld-linux.so.2 (0x4818b000)

実行例では、標準的に使用されるlsコマンドと、暗号化通信が必要となるsshコマンドをlddコマンドで調べてみました。
簡単な動作をしているように見えるlsコマンドでも、沢山の共有ライブラリが使用されているのが分かります。
sshコマンドは、暗号化を行う必要があるので、"crypt"というキーワードが入ったライブラリなどが見えるのが分かるでしょうか。

Linuxディストリビューションでは、パッケージ管理システムが必要となる共有ライブラリを依存性で管理してくれるため、必要となる共有ライブラリが無い、という事態はあまり起きませんが、プログラムをソースコードからコンパイルしてインストールしているような場合には、これらの問題に直面するかもしれません。特に、実際に使用する環境でビルドするのではなく、ビルドしたバイナリーファイルだけを別環境に移すような場合には、共有ライブラリが無い、ということが起きやすいので、注意が必要でしょう。

  • 今回の解説について、理解できないポイントがあればどんどん質問を。
  • 採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
  • ご質問・ご意見はこちら
  • ※上記の解説とその内容については、例題作成者の監修です。
    内容や試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

このページのトップへ