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
apxs
ġ ؽƮ
(HTTP) Ȯ ϰ ġϴ ̴.
ҽ Ʈ ,
mod_so
LoadModule
þ ߿
ġ о ִ ü(DSO) .
̷ Ȯ Ϸ ÷ DSO
ϰ ġ httpd
mod_so
ؾ Ѵ.
apxs
ʴ´. ɾ Ͽ ϴ ˾ƺ
ִ
$ httpd -l
Ͽ mod_so
; Ѵ.
ϸ apxs
DSO ġϿ
ġ Ȯ ִ:
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/etc/httpd.conf]
$ apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _
ƱԸƮ files C ҽ (.c) ̳
Ʈ (.o), ̺귯 (.a) ִ.
apxs
Ȯڸ ڵ C ҽ
ϰ, Ʈ ũ Ѵ.
Ʈ Ϸ о ִ
ü ϱ ݵ Ʈ ġڵ(PIC,
position independent code) ؾ Ѵ. GCC
-fpic
ϸ ȴ. ٸ C Ϸ
ϰų apxs
Ʈ Ҷ
ϴ ɼ ϶.
ġ DSO ڼ
mod_so
ϰų
src/modules/standard/mod_so.c
ҽ о.
apxs -g
[ -S name=value ]
-n modname
apxs -q
[ -S name=value ]
query ...
apxs -c
[ -S name=value ]
[ -o dsofile ]
[ -I incdir ]
[ -D name=value ]
[ -L libdir ]
[ -l libname ]
[ -Wc,compiler-flags ]
[ -Wl,linker-flags ]
files ...
apxs -i
[ -S name=value ]
[ -n modname ]
[ -a ]
[ -A ]
dso-file ...
apxs -e
[ -S name=value ]
[ -n modname ]
[ -a ]
[ -A ]
dso-file ...
-n modname
-i
(install) -g
(template
generation) ɼ Ҷ Ѵ.
ɼ Ͽ Ѵ. -g
ɼ Ѵٸ ɼ ݵ ؾϰ,
-i
ɼ Ѵٸ apxs
ҽ ( õ) ϸ ̸ Ѵ.-q
apxs
˾Ƴ. query
ִ: CC
, CFLAGS
,
CFLAGS_SHLIB
, INCLUDEDIR
,
LD_SHLIB
, LDFLAGS_SHLIB
,
LIBEXECDIR
, LIBS_SHLIB
,
SBINDIR
, SYSCONFDIR
, TARGET
.
˾Ƴ Ѵ.
INC=-I`apxs -q INCLUDEDIR`
, ġ C Ѵٸ Makefile Ѵ.
-S name=value
-g
-n
ɼ ) װ ΰ :
mod_name.c
ߺ ҽϷ,
ڽ 鶧 ߺ ϰų apxs
غ Ѵ. ٸ ϰ
ġϱ Makefile
̴.-c
-o
ɼ files
ù° ϸ ̸ Ͽ
mod_name.so
Ѵ.-o dsofile
mod_unknown.so
̸
Ѵ.-D name=value
-I incdir
-L libdir
-l libname
-Wc,compiler-flags
libtool --mode=compile
ɾ Ѵ.
Ϸ Ư ɼ ߰Ҷ Ѵ.-Wl,linker-flags
libtool --mode=link
ɾ Ѵ. Ŀ
Ư ɼ ߰Ҷ Ѵ.-i
-a
httpd.conf
Ͽ
LoadModule
߰ϰų ̹ ִٸ ȰȭϿ ϵ
.-A
-a
, LoadModule
þ տ
칰(#
) δ. ,
߿ ֵ غѴ.-e
-a
Ȥ -A
ɼǰ , -i
ɰ
ġʰ ġ
httpd.conf
ϸ Ѵ.ġ Ȯϴ mod_foo.c
ġ ִٰ . ɾ Ͽ
C ҽ ġ о ü Ѵ:
$ apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$ _
ü о̴ LoadModule
þ ġ
߰Ѵ. apxs
ڵ ü
"modules" 丮 ġϰ httpd.conf
˸° Ͽ ۾ ģ. Ѵ:
$ apxs -i -a mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[/path/to/apache/conf/httpd.conf `foo' ȰȭѴ]
$ _
LoadModule foo_module modules/mod_foo.so
Ͽ ٸ ߰Ѵ. ⺻
ʴ´ٸ -A
ɼ Ѵ.
$ apxs -i -A mod_foo.c
apxs Ϸ ġ ߺ Makefile ִ:
$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
$ _
ٷ ߺ ü Ͽ ġ еѴ:
$ cd foo
$ make all reload
apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[/path/to/apache/conf/httpd.conf `foo' ȰȭѴ]
apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _