Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all
名前
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)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。