USELIB
Section: Linux Programmer's Manual (2)
Updated: 2005-01-09
Index
JM Home Page
roff page
名前
uselib - 共有ライブラリを選択する
書式
#include <unistd.h>
int uselib(const char *library);
説明
システムコール
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)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:10 GMT, November 19, 2007