Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       uselib - 共有ライブラリを選択する

書式

       #include <unistd.h>

       int uselib(const char *library);

       Note: No declaration of this system call is provided in glibc headers; see NOTES.

説明

       システムコール uselib()  は、呼び出し元プロセスが使用する 共有ライブラリをロードする際に使
       用される。 このシステムコールにはライブラリのパス名を指定する。 ライブラリをロードするアド
       レスはライブラリ自身に書かれている。  ライブラリは認識可能なバイナリ形式であればどんな形式
       でもよい。

返り値

       成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

       open(2)   と  mmap(2)   が返すエラーコードに加えて、以下のエラーコードが設定されることがあ
       る。

       EACCES library で指定されたライブラリに対する読み込み許可、または実行許可がない。 もしくは
              library            が存在するディレクトリかその上位のいずれかに対する検索許可がない
              (path_resolution(7)  も参照)。

       ENFILE オープンされたファイルの総数がシステム全体の上限に達していた。

       ENOEXEC
              library  で指定されたファイルが、実行可能ファイルと認識されるファイル種別ではない。
              例えば、正しいマジックナンバーが付いていない。

準拠

       uselib()  は Linux 特有の関数であり、移植性を持たせたいプログラム には使用すべきでない。

注意

       This obsolete system call is not supported by glibc.  No declaration is provided in  glibc
       headers, but, through a quirk of history, glibc versions before 2.23 did export an ABI for
       this system call.  Therefore, in order to employ this system call, it  was  sufficient  to
       manually  declare  the  interface in your code; alternatively, you could invoke the system
       call using syscall(2).

       In ancient libc versions (before glibc  2.0),  uselib()   was  used  to  load  the  shared
       libraries with names found in an array of names in the binary.

       Since  Linux  3.15,  this system call is available only when the kernel is configured with
       the CONFIG_USELIB option.

関連項目

       ar(1), gcc(1), ld(1), ldd(1), mmap(2), open(2), dlopen(3), capabilities(7), ld.so(8)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。