<-
Apache > HTTP Server > �ĵ� > �汾2.2 > ֧�ֳ���
���� ��л | �������� | ��ƪ���ߣ��𲽹� | ��ҳ�����£�2006��1��13�� | ��ȡ���°汾

apxs - Apache ��չ����

apxs��һ��ΪApache HTTP����������Ͱ�װ��չģ��Ĺ��ߣ����ڱ���һ������Դ�����Ŀ������ļ�Ϊ��̬�������ʹ֮��������mod_so�ṩ��LoadModuleָ��������ʱ���ص�Apache�������С�

��ˣ�Ҫʹ�������չ���ƣ����ƽ̨����֧��DSO���ԣ�����Apache httpd�����ڽ���mod_soģ�顣apxs�������Զ�̽���Ƿ�߱���������������Ҳ�����Լ�����������ֶ�̽�⣺

$ httpd -l

�����������б���Ӧ����mod_soģ�顣���������Щ�������Ѿ߱�������Ժ����׵ؽ���apxs��װ���Լ���DSOģ������չApache�������Ĺ��ܣ�

$ 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
$ _

���еIJ���files�������κ�CԴ�����ļ�(.c)��Ŀ������ļ�(.o)��������һ����(.a)��apxs���߻�������׺�Զ�����CԴ�����������Ŀ�����Ϳ⡣���ǣ�ʹ��Ԥ�����Ŀ�����ʱ�����뱣֤�����ǵ�ַ��������(PIC)��ʹ֮�ܱ���̬�ؼ��ء����ʹ��GCC���룬��Ӧ��ʹ�� -fpic ���������ʹ������C����������Ӧ�ò������ֲᣬΪapxsʹ����Ӧ�ı��������

�й�Apache��DSO��֧�ֵ���ϸ��Ϣ�������Ķ�mod_so�ĵ�������ֱ���Ķ�src/modules/standard/mod_so.cԴ����

top

�﷨

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 ...

top

ѡ��

һ��ѡ��

-n modname
����ȷ������ -i(��װ)�� -g(ģ������)ѡ���ģ�����ơ��� -g ѡ����DZ���ģ��� -i ѡ�apxs���߻����Դ�����жϣ���(��ʧ�ܵ������)���ļ����Ʋ�����ģ������ơ�

��ѯѡ��

-q
��ѯij��apxs���õ���Ϣ����ѡ���query��������������һ�������ַ�����CC, CFLAGS, CFLAGS_SHLIB, INCLUDEDIR, LD_SHLIB, LDFLAGS_SHLIB, LIBEXECDIR, LIBS_SHLIB, SBINDIR, SYSCONFDIR, TARGET ��

������������ֶ���ѯijЩ���á����磬Ҫ�ֶ�����Apache��Cͷ�ļ���������Makefile��ʹ�ã�

INC=-I`apxs -q INCLUDEDIR`

����ѡ��

-S name=value
��ѡ����Ըı�apxs���������á�

ģ������ѡ��

-g
��ѡ������һ����Ϊname����Ŀ¼(��ѡ�� -n)�����е������ļ���һ������Ϊmod_name.c������ģ��Դ���򣬿��������������Լ���ģ�飬����ѧϰʹ��apxs���Ƶ����ÿ��ˣ���һ�����Ƕ�Ӧ��Makefile �����ڱ���Ͱ�װ��ģ�顣

DSO����ѡ��

-c
��ѡ���ʾ��Ҫִ�б�������������Ȼ����CԴ����(.c)filesΪ��Ӧ��Ŀ������ļ�(.o)��Ȼ��������ЩĿ������files�������Ŀ������ļ�(.o��.a)�������ɶ�̬�������dsofile �����û��ָ�� -o ѡ��������ļ�����files�еĵ�һ���ļ����Ʋ�õ���Ҳ����Ĭ��Ϊmod_name.so ��
-o dsofile
��ȷָ���������Ķ�̬���������ļ����������ܴ�files�ļ��б����Ʋ�õ������û����ȷָ���������ļ�����Ϊmod_unknown.so ��
-D name=value
��ѡ��ֱ�Ӵ��ݵ�������������������Զ���ı��������
-I incdir
��ѡ��ֱ�Ӵ��ݵ�������������������Զ���İ���Ŀ¼��
-L libdir
��ѡ��ֱ�Ӵ��ݵ�������������������Զ���Ŀ��ļ�Ŀ¼��
-l libname
��ѡ��ֱ�Ӵ��ݵ�������������������Զ���Ŀ��ļ���
-Wc,compiler-flags
��ѡ��������������� libtool --mode=compile �и���compiler-flags �������ӱ��������е�ѡ�
-Wl,linker-flags
��ѡ���������������� libtool --mode=link �и���linker-flags �����������������е�ѡ�

DSO�İ�װ������ѡ��

-i
��ѡ���ʾ��Ҫִ�а�װ�������԰�װһ��������̬������󵽷�������modulesĿ¼�С�
-a
��ѡ���Զ�����һ��LoadModule�е�httpd.conf�ļ��У��Լ����ģ�飬���ߣ���������Ѿ����ڣ�������֮��
-A
�� -a ѡ�����ƣ����������ӵ�LoadModule������һ������ǰ׺(#)������ģ���Ѿ�׼����������δ���á�
-e
��ʾ��Ҫִ�б༭�������������� -a �� -A ѡ�����ʹ�ã��� -i �������ƣ��޸�Apache��httpd.conf�ļ������Dz�����װ��ģ�顣
top

����

������һ����չApache���ܵ�ģ��mod_foo.c ��ʹ������������Խ�CԴ�������Ϊ����ģ�飬��������ʱ���ص�Apache�������У�

$ 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
$ _

Ȼ�󣬱����޸�Apache�����ã���ȷ����һ��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
[activating module 'foo' in /path/to/apache/conf/httpd.conf]
$ _

��������ļ����в����ڣ����������е��У�

LoadModule foo_module modules/mod_foo.so

�����ϣ��Ĭ�Ͻ��ô�ģ�飬����ʹ�� -A ѡ�����

$ apxs -i -A mod_foo.c

Ҫ���ٲ���apxs���ƣ����Խ���һ��Apacheģ�����弰���Ӧ��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
$ _

Ȼ���������Ա��������ģ��Ϊ������󲢼��ص�Apache�������У�

$ 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
[activating module 'foo' in /path/to/apache/conf/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
$ _