USELIB(2) | Linux Programmer's Manual | USELIB(2) |
名前
uselib -共有ライブラリを選択する書式
#include <unistd.h>説明
システムコール uselib() は、呼び出し元プロセスが使用する共有ライブラリをロードする際に使用される。このシステムコールにはライブラリのパス名を指定する。ライブラリをロードするアドレスはライブラリ自身に書かれている。ライブラリは認識可能なバイナリ形式であればどんな形式でもよい。返り値
成功した場合は 0 が返される。エラーの場合は-1 が返され、 errno が適切に設定される。エラー
open(2) と mmap(2) が返すエラーコードに加えて、以下のエラーコードが設定されることがある。- EACCES
- library で指定されたライブラリに対する読み込み許可、または実行許可がない。もしくは library が存在するディレクトリかその上位のいずれかに対する検索許可がない ( path_resolution(7) も参照)。
- ENFILE
- オープンされたファイルの総数がシステム全体の上限に達していた。
- ENOEXEC
- library で指定されたファイルが、実行可能ファイルと認識されるファイル種別ではない、つまり正しいマジック・ナンバーが付いていない。
準拠
uselib() は Linux 特有の関数であり、移植性を持たせたいプログラムには使用すべきでない。注意
初期の libc の起動コードは、 uselib() を使って、バイナリ中のリストに書かれている共有ライブラリをリスト中のそのままの名前でロードしていた。libc 4.3.2 以降では、これらの名前の前に "/usr/lib", "/lib", ""をつけて共有ライブラリを探すようになった。 libc 4.3.4 以降では、これらの名前の共有ライブラリをまず LD_LIBRARY_PATH で指定されたディレクトリで探し、見つからなければ、名前の前に "/usr/lib", "/lib", "/"をつけて探す。
libc 4.4.4 以降では、ライブラリ "/lib/ld.so"だけがロードされ、その後でこの動的ライブラリが (このシステムコールをもう一度使って) 必要な残りのライブラリをロードできるようになっている。
glibc2 は、このシステムコールを使用しない。
関連項目
ar(1), gcc(1), ld(1), ldd(1), mmap(2), open(2), dlopen(3), capabilities(7), ld.so(8)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2005-01-09 | Linux |