Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
Linux Magazine

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 68 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       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,com­
       piler-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 ...


       apxs  is a tool for building and installing extension mod­
       ules for the Apache  HyperText  Transfer  Protocol  (HTTP)
       server.  This  is  achieved  by  building a dynamic shared
       object (DSO) from one or more source or object files which
       then  can  be  loaded into the Apache server under runtime
       via the LoadModule directive from mod_so.

       So to use this extension mechanism your  platform  has  to
       support  the  DSO feature and your Apache httpd binary has
       to be built with the mod_so module. The apxs tool automat­
       ically  complains  if  this is not the case. You can check
       this yourself by manually running the command

             $ httpd -l

       The module mod_so should be part of the displayed list. If
       these  requirements  are  fulfilled  you can easily extend
       your Apache server's functionality by installing your  own
       modules  with  the  DSO mechanism by the help of this apxs

             $ 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

       matically  used  the  C source files for compilation while
       just using the object and archive files  for  the  linking
       phase.  But when using such pre-compiled objects make sure
       they are compiled for position independent code  (PIC)  to
       be  able  to  use  them  for  a  dynamically loaded shared
       object. For instance with GCC you always just have to  use
       -fpic. For other C compilers consult its manual page or at
       watch for the flags apxs uses to compile the object files.

       For more details about DSO support in Apache read the doc­
       umentation of mod_so or perhaps  even  read  the  src/mod­
       ules/standard/mod_so.c source file.



              -n modname
                     This explicitly sets the module name for the
                     -i (install) and  -g  (template  generation)
                     option.  Use  this to explicitly specify the
                     module name. For option -g this is required,
                     for  option -i the apxs tool tries to deter­
                     mine the name from the source or (as a fall­
                     back) at least by guessing it from the file­


              -q     Performs a query for apxs's knowledge  about
                     certain  settings.  The query parameters can
                     be one or more of the following strings: CC,
                     LDFLAGS_SHLIB,    LIBEXECDIR,    LIBS_SHLIB,
                     SBINDIR,  SYSCONFDIR,  TARGET.  .PP Use this
                     for  manually  determining   settings.   For
                     instance  use .nf INC=-I`apxs -q INCLUDEDIR`
                     .fi .PP inside your  own  Makefiles  if  you
                     need  manual  access  to  Apache's  C header

              -g     This  generates  a  subdirectory  name  (see
                     option -n) and there  two  files:  A  sample
                     module  source  file  named mod_name.c which
                     can be used as a template for creating  your
                     own  modules or as a quick start for playing
                     with the apxs mechanism. And a corresponding
                     Makefile   for   even   easier   build   and
                     installing of this module.


              -c     This indicates the compilation operation. It
                     first  compiles  the  C source files (.c) of
                     files into corresponding object  files  (.o)
                     and  then builds a dynamically shared object
                     in dsofile by  linking  these  object  files
                     plus  the remaining object files (.o and .a)
                     of files. If no -o option is  specified  the
                     output  file is guessed from the first file­
                     name in files and thus usually  defaults  to

              -o dsofile
                     Explicitly  specifies  the  filename  of the
                     created dynamically shared  object.  If  not
                     specified  and  the  name  cannot be guessed
                     from  the  files  list,  the  fallback  name
                     mod_unknown.so is used.

              -D name=value
                     This  option  is  directly passed through to
                     the compilation command(s). Use this to  add
                     your own defines to the build process.

              -I incdir
                     This  option  is  directly passed through to
                     the compilation command(s). Use this to  add
                     your  own  include  directories to search to
                     the build process.

              -L libdir
                     This option is directly  passed  through  to
                     the linker command. Use this to add your own
                     library directories to search to  the  build

              -l libname
                     This  option  is  directly passed through to


              -i     This indicates  the  installation  operation
                     and  installs one or more dynamically shared
                     objects into the server's modules directory.

              -a     This  activates  the module by automatically
                     adding a corresponding  LoadModule  line  to
                     Apache's  httpd.conf  configuration file, or
                     by enabling it if it already exists.

              -A     Same as option -a but the created LoadModule
                     directive  is prefixed with a hash sign (#),
                     i.e., the module is just prepared for  later
                     activation but initially disabled.

              -e     This  indicates the editing operation, which
                     can be used with the -a and -A options simi­
                     larly  to  the -i operation to edit Apache's
                     httpd.conf   configuration   file    without
                     attempting to install the module.


       Assume you have an Apache module named mod_foo.c available
       which should  extend  Apache's  server  functionality.  To
       accomplish  this  you  first  have to compile the C source
       into a shared object suitable for loading into the  Apache
       server under runtime via the following command:

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

       Then you have to update the Apache configuration by making
       sure a LoadModule directive is present to load this shared
       object.  To  simplify this step apxs provides an automatic
       way to install the shared object in its  "modules"  direc­
       tory  and  updating  the httpd.conf file accordingly. This
       can be achieved by running:

             $ apxs -i -a mod_foo.c
             cp mod_foo.so /path/to/apache/modules/mod_foo.so
             chmod 755 /path/to/apache/modules/mod_foo.so

       option, i.e.

             $ apxs -i -A mod_foo.c

       For a quick test of the apxs mechanism you  can  create  a
       sample  Apache  module template plus a corresponding Make­
       file via:

             $ apxs -g -n foo
             Creating [DIR]  foo
             Creating [FILE] foo/Makefile
             Creating [FILE] foo/mod_foo.c
             $ _

       Then you can immediately compile this sample module into a
       shared object and load it into the Apache server:

             $ cd foo
             $ make all reload
             apxs -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
             apxs -i -a -n "foo" mod_foo.so
             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
             $ _

       You  can  even use apxs to compile complex modules outside
       the Apache source tree, like PHP3:

             $ cd php3
             $ ./configure --with-shared-apache=../apache-1.3
             $ apxs -c -o libphp3.so mod_php3.c libmodphp3-so.a
             gcc -fpic -DSHARED_MODULE -I/tmp/apache/include  -c mod_php3.c
             ld -Bshareable -o libphp3.so mod_php3.o libmodphp3-so.a
             $ _


There are several different ways to navigate the tutorial.



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
The Linux Tutorial can use your help.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.09 Seconds