2009年11月25日- Shuichi501 presents -

改めてdlopen(3)か

アプリケーションから呼び出しがあった場合、
アプリケーションでは、
関数呼び出し dlopen(3) と dlclose(3) を使用して
共有オブジェクトやプレーンな実行可能ファイルの読み込みや
読み込みの取り消しを行うようだ。

プログラムの開始時に環境変数 LD_LIBRARY_PATH に
コロン区切りのディレクトリのリストが定義されていれば、
この環境変数に定義されたディレクトリが検索される

そもそも、
linux ではダイナミックリンクの方法に
「暗黙的なリンク」と「明示的なリンク」があるわけだが、

apache では module をロードするために
「明示的」なリンクであるところの
dlopen(3) を行っているようだ。

dlopen(3)で指定しているRTLD_LAZYというのは、
ロード時にシンボルの値の解決をさぼる(lazy)の意味である。

RTLD_LAZYの代わりにRTLD_NOWをしているすると、
ロード時にシンボルの値を解決する。
もし解決に失敗すると、dlopen(3)自体が失敗となる。

RTLD_LAZYの場合は、解決できないシンボルがあっても、
dlsym(3)で調べるまでは解決しないので、
dlopen(3)はエラーにはならない。



RSS


shuichi501
posted at 16:56
この記事をクリップ!





2009年11月20日

2009年11月18日

2009年11月17日

2009年11月16日

2009年11月12日

2009年11月11日

2009年11月09日

2009年10月30日

2009年10月29日

2009年10月28日

2009年10月27日

2009年10月22日

2009年10月20日

2009年10月14日

2009年10月13日

2009年10月07日

2009年10月06日

2009年10月05日

2009年10月04日

2009年10月02日

2009年10月01日

2009年09月20日

2009年09月18日

2009年09月17日

2009年09月16日

2009年09月15日

2009年09月14日

2009年09月09日

2009年09月08日

2009年09月07日