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

��̬�������(DSO)֧��

Apache HTTP��������һ��ģ�黯�����������Ա����ͨ��ѡ��������а�����ģ����й���������ģ������ڱ���ʱ����̬������httpd�������ļ���Ҳ���Ա���ɶ�����httpd�������ļ��Ķ�̬�������(DSO)��DSOģ������������һ����룬Ҳ������Apache��չ����(apxs)�������롣

���IJ������ʹ��DSOģ�鼰�乤��ԭ��

top

ʵ��

Apache�Զ���ģ���DSO֧���ǽ�����ֻ�ܱ���̬�����Apache���ĵ�mod_so����֮�ϵģ�����core����Ψһ������ΪDSO���ڵ�ģ�飬�����������ѷ�����Apacheģ�飬������ͨ����װ�ĵ��в����е�����ѡ�� --enable-module=shared �������ر����DSO��ʹ֮��Ч��һ��������Ϊmod_foo.so��DSOģ�飬������httpd.conf��ʹ��mod_so��LoadModuleָ��ڷ�������������������ʱ�����ء�

���ṩ��֧�ֳ���apxs(APache eXtenSion)������ApacheԴ������֮���������DSO��ģ�飬�Ӷ�����Apache DSOģ��Ľ������̡���ԭ��ܼ򵥣���װApacheʱ��configure�� make install ����ᰲװApache Cͷ�ļ��������������ض�ƽ̨�ı���������������������apxs����ʹ�û���������Apache�ķ���Դ������������ģ��Դ���룬�����ı�֧��DSO�ı��������������IJ�����

top

�÷���Ҫ

Apache2.0 ��DSO���ܼ�Ҫ˵����

  1. ���벢��װ�ѷ�����Apacheģ�飬�������mod_foo.cΪmod_foo.so��DSOģ�飺

    $ ./configure --prefix=/path/to/install --enable-foo=shared
    $ make install

  2. ���벢��װ������ģ�飬�������mod_foo.cΪmod_foo.so��DSOģ�飺

    $ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
    $ make install

  3. ����Apache�Ա��Ժ�װ����ģ�飺

    $ ./configure --enable-so
    $ make install

  4. ��apxs��ApacheԴ�����������벢��װ������ģ�飬�������mod_foo.cΪmod_foo.so��DSOģ�飺

    $ cd /path/to/3rdparty
    $ apxs -c mod_foo.c
    $ apxs -i -a -n foo mod_foo.la

����ģ�������Ϻ󣬱�����httpd.conf����LoadModuleָ��ʹApache���ø�ģ�顣

top

����֪ʶ

�ִ�����Unixϵͳ����һ�ֽ���̬�������(DSO)�Ķ�̬����/���ص�����Ļ��ƣ��Ӷ�����������ʱ������������ʽ�Ĵ�����ص�һ����ִ�г���ĵ�ַ�ռ䡣

���صķ���ͨ�������֣���һ���ڿ�ִ���ļ�����ʱ��ϵͳ����ld.so�Զ����أ�������ڿ�ִ�г������ֶ���ͨ��Unix��������ϵͳ�ӿ�ִ��ϵͳ����dlopen()/dlsym()���м��ء�

����һ�ַ�����DSOͨ������Ϊ�����(shared libraries)����DSO��(DSO libraries)��ʹ��libfoo.so��libfoo.so.1.2���ļ������洢��ϵͳĿ¼��(ͨ����/usr/lib)�����ڱ��밲װʱʹ������������ -lfoo ������ָ���ִ�г�������ӡ�ͨ���������������� -R ���߻�������LD_LIBRARY_PATH ������Ӳ�����˿�ִ���ļ���·����ʹUnix�������ܹ��ڿ�ִ�г�������ʱ��λ��λ��/usr/libĿ¼�е�libfoo.so ���Խ�����ִ���ļ�����δ������λ��DSO�еķ��š�

ͨ����DSO�������ÿ�ִ���ļ��еķ���(��Ϊ����ͨ�ô���Ŀ����ÿ�)��Ҳ�����к�̵Ľ�����������ִ���ļ������Լ����κζ�����ʹ��DSO�еķ��ţ�����ȫ��Unix����������(��ʵ�ϣ�����ld.so�Ĵ����DZ�����ÿ����ִ���ļ��ķǾ�̬����ʱ���������һ����)����̬���ع����������ŵ������Եģ�ֻ��Ҫ��ϵͳ��libc.so�д洢һ�ο���룬�Ӷ�Ϊÿ�������ʡ�˴��̴洢�ռ䡣

���ڶ��ַ�����DSOͨ������Ϊ�������(shared objects)��DSO�ļ�(DSO files)������ʹ���κ��ļ���(���ǹ淶��������foo.so)�����洢�ڳ����ض���Ŀ¼�У�Ҳ�����Զ�����ָ�������õĿ�ִ���ļ������ӣ����ɿ�ִ���ļ�������ʱ�Լ�����dlopen()������DSO�����ַ�ռ䣬ͬʱҲ�������Ϊ��ִ���ļ�����DSO�з��ŵIJ�����Unix����������ݿ�ִ�г����������ű���Ѿ����ص�DSO���Զ�����DSO����δ�����ķ���(�������������ڵ�libc.so�еķ���)�����DSO�ͻ���˿�ִ�г���ķ�����Ϣ���ͺ����DZ���̬����һ����

���Ϊ������DSO API���ŵ㣬��ִ�г��������dlsym()����DSO�еķ��ţ��Ա��Ժ�������ָ�ɱ��ȵ���ʹ�á�Ҳ����˵����ִ�г�������Լ�����������ķ��š����ֻ��Ƶ��ŵ����������ؿ�ѡ�ij��򲿼���ֱ��������Ҫ��ʱ��ű���̬�ؼ���(Ҳ�Ͳ���Ҫ�ڴ濪��)������չ����Ĺ��ܡ�

��Ȼ����DSO���ƿ��ƺ�ֱ�ӣ���������һ���ѵ㣬��������DSO��չ������(�ڶ��ַ���)ʱΪDSO�Կ�ִ�г����з��ŵĽ��н�����������Ϊ��"�������"��ִ�г����е�DSO���������б�׼ƽ̨��������ƶ���ì�ܵ�(�ⲻ��֪��ʲô�����ʹ����)��ʵ��Ӧ���У���ִ���ļ��е�ȫ�ַ���ͨ������������ģ���˲���ΪDSO���á�����������ʱ��DSO����չ�����ܣ��ͱ����ҵ�ǿ���������������ȫ�ַ��ŵķ�����

�������һ�ֵ��͵Ľ����������Ϊ������DSO���ƣ�����Ϊ����ϵͳ���ṩ�ļ����������͵Ŀ���ʹ�á���һ���棬ʹ�ù�����󲢲���������Ϊ��չ�书�������õķ�����

��ֹ��1998�ֻ꣬�������������ʹ��DSO����������ʱ��չ�书�ܣ����� Perl 5(ͨ����XS���ƺ�DynaLoaderģ��)��Netscape Server�ȡ���1.3�汾��ʼ��ApacheҲ������У���ΪApache�Ѿ����˻���ָ�ɱ�(dispatch-list-based)�ķ����������ⲿģ�鵽Apache�ĺ��ġ�����ApacheҲ�͵�Ȼ��������ʱ��DSO��������ģ�顣

top

�ŵ��ȱ��

��������DSO�Ĺ����������ŵ㣺

DSO������ȱ�㣺