名 前
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/ に 書 か れ て い る 。