PNG IHDR ; IDATxܻn0K )(pA7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5 bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô!x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%tMז -lG6mrz2s%9s@-k9=)kB5\+͂ZsٲRn~GRCwIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL /F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ R IENDB`
Apache HTTP Server Version 2.4
ġ ڰ Ͽ
ִ ȭ α̴. Ҷ
httpd
Ͽ
ִ. ƴϸ httpd
ϰ
иϿ ü(Dynamic Shared Objects, DSO)
ִ. DSO Ҷ ϰų, Apache
Extension Tool (apxs)
Ͽ ߿ Ͽ ߰ ִ.
DSO ̷ Ѵ.
õ | õ þ |
---|---|
ġ ٽɿ ؾ
mod_so.c
ġ
о̱ DSO Ѵ.
core
ϰ DSO
̴. ٸ ġ
ġ
configure
--enable-module=shared
ɼ Ͽ DSO ִ.
mod_foo.so
DSO httpd.conf
Ͽ mod_so
LoadModule
ɾ
Ͽ ۽ Ȥ ۽ о
ִ.
ġ (Ư ڰ ) DSO
apxs (APache
eXtenSion) ο α ִ. α
ġ ҽ Ʈ ۿ DSO
Ҷ Ѵ. . ġ ġҶ
configure
make install
ġ C ġϰ, DSO ϱ
÷ Ư Ϸ ɼǰ Ŀ ɼ apxs
α Ѵ. apxs
ϴ ڴ
ġ ҽ Ʈ, DSO ÷ Ư
Ϸ ɼǿ Ŀ ɼǿ Ű ʰ ڽ ġ
ҽ ִ.
Apache 2.2 DSO ɿ ª ̴:
mod_foo.c
DSO
mod_foo.so
:
$ ./configure --prefix=/path/to/install --enable-foo=shared
$ make install
mod_foo.c
DSO
mod_foo.so
:
$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
$ make install
$ ./configure --enable-so
$ make install
mod_foo.c
DSO mod_foo.so
:
$ cd /path/to/3rdparty
$ apxs -c mod_foo.c
$ apxs -i -a -n foo mod_foo.la
ϴ ϵǸ, httpd.conf
LoadModule
þ
Ͽ ġ о̰ .
н ü (DSO) ŷ/ε(dynamic linking/loading)̶ Ͽ, Ư ڵ α ּҰ о̴ ִ.
ΰ о ִ. ϳ α
Ҷ ld.so
ý α ڵ
о̴ , ٸ ϳ α
dlopen()/dlsym()
ýȣ н δ(loader)
ý ̽ Ͽ о̴ .
ù° DSO ̺귯(shared libraries)
Ȥ DSO ̺귯 θ,
libfoo.so
libfoo.so.1.2
̸ . ̵ ý 丮( /usr/lib
)
ְ, Ͻ Ŀ ɾ -lfoo
־
ϰ Ѵ. ̷ ̺귯 Ͽ
ǿ, α Ҷ Ŀ ɼ -R
, ȯ溯 LD_LIBRARY_PATH
Ȥ /usr/lib
н δ
libfoo.so
ã ִ. α
( ã(unresolved)) ɺ(symbol) DSO ãԵȴ.
DSO α ɺ ãʱ (DSO
밡 Ϲ ڵ ̺귯̹Ƿ) ã ⼭
. н δ ɺ ã⸦ ϹǷ α
DSO ɺ ã ʿ䰡 . ( ld.so
θ ڵ ƴ α ũǴ
ڵ Ϻδ.) ̺귯 ڵ带 о̴
Ȯϴ. ̺귯 ڵ尡 α ߺؼ
Ǵ libc.so
ý ̺귯
ѹ DZ ũ ȴ.
ι° DSO ü(shared objects)
Ȥ DSO ̶ θ, (Ģ ̸
foo.so
) Ȯڴ Ӵ.
ϵ α ü 丮 ġϰ α
ڵ ʴ´. α
dlopen()
Ͽ DSO ּҰ
о鿩 Ѵ. ̶ α DSO ɺ
ã ʴ´. տ н δ ڵ ϰ
̹ о DSO ̺귯(Ư ϴ
libc.so
ɺ) DSO ( ã)
ɺ ã´. DSO ġ ó α
ũȰͰ ɺ ˰Եȴ.
DSO API ̿ϱؼ α
dlsym()
DSO Ư ɺ ãƼ,
ϱ ġ(dispatch) ǥ Ѵ.
ٸ α Ǻ ãƾѴ.
̷ α Ϻθ α
ʿҶ о ʾƵ (
ʰ) ȴٴ ̴. ⺻ α Ȯϱ
ʿ κ о ִ.
̷ DSO ڿ , ּ Ѱִ. α Ȯϱ DSO Ҷ DSO α ɺ ã ̴. ? DSO α ɺ " ã " (̺귯 ڽ ϴ α ٴ) ̺귯 迡 ϸ, ÷ ʰ ǥȭ ʾұ ̴. ɺ(global symbol) ͽƮ(export) ʱ DSO . DSO Ͽ α ȮϷ Ŀ ɺ ͽƮϵ ϴ ֵ ذå̴.
̺귯 DSO Ģ ̱ ü ϴ ̺귯 Ѵ. ݴ α α Ȯϱ ü ʴ´.
1998 Ȯϱ DSO Ʈ Ű (XS DynaLoader ) Perl 5, Netscape Server 幰. ġ ̹ Ȯϱ ߰ ܺ ġ ٽɱɿ ϱ ġ ̿ ٹ ߱ 1.3 뿭 շߴ. ġ о̴µ DSO ϵ .
տ DSO ϸ ִ:
configure
ɼǴ httpd.conf
LoadModule
Ͽ ߿
յǹǷ Ű ϴ. ѹ
ġ ġ ٸ (ǥ SSL , ּȭ
߰ [mod_perl, PHP3] )
ִ.apxs
ġ ҽ Ʈ ۿ
۾ϰ apxs -i
apachectl restart
ɾ ġ
ݿ ־ ġ
ִ.DSO ִ:
ld -lfoo
)
ũ ÷ ֱ ( ELF
÷ a.out ÷
ʴ´) DSO .
ٸ DSO Ϸ ϴ ġ ٽɰ ġ
ٽ ϴ C ̺귯(libc
) ٸ
/ ̺귯, ġڵ带 ִ ̺귯
ī̺(libfoo.a
) ɺ ִ.
ٸ ڵ带 Ϸ ġ ٽ װ ϴ,
dlopen()
ڵ带 о鿩 Ѵ.