West-chamber borrows build system from xtables-addons.
Xtables-addons uses the well-known configure(autotools) infrastructure in combination with the kernel’s Kbuild system.
$ ./configure
$ make
# make install
You have to run ./autogen.sh (requires automake) if configure
script is not present. The configure
script should be run with bash.
To install the UDPENCAP target, you need to enable it in mconfig
. Warning: this module is highly experimental. Use with caution!
You can edit the “mconfig” file to select what modules to build and install. By default, all modules are enabled.
./configure [options]
--with-kbuild=
Specifies the path to the kernel build output directory. We need it for building the kernel extensions. It defaults to /lib/modules/$(runningversion)/build
, which usually points to the right directory. (If not, you need to install something.)
For RPM building, it should be /usr/src/linux-obj/...
or whatever location the distro makes use of.
--with-xtlibdir=
Specifies the path to where the newly built extensions should be installed when make install
is run. The default is to use the same path that Xtables/iptables modules use, as determined by pkg-config xtables --variable xtlibdir
. Thus, this option normally does NOT need to be specified anymore, even if your distribution put modules in a strange location.
If you want to enable debugging, use
./configure CFLAGS="-ggdb3 -O0"
(-O0 is used to turn off instruction reordering, which makes debugging much easier.)
To make use of a libxtables that is not in the default path, either
append the location of the pkg-config files like:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
(assuming that files have been installed), or,
override the pkg-config variables, for example:
./configure libxtables_CFLAGS="-I../iptables/include" \
libxtables_LIBS="-L../iptables/.libs \
-Wl,-rpath,../iptables/.libs -lxtables"
(Use this in case you wish to use it without having to run make install
. This is because the libxtables.pc
pkgconfig file in ../iptables
would already point to e.g. /usr/local
.)
V= controls the verbosity of make commands.
V=0 "silent" (output filename)
V=1 "verbose" (entire gcc command line)
Except for --with-kbuild
, distributions should not have a need to supply any other flags (besides --prefix=/usr
and perhaps --libdir=/usr/lib64
, etc.) to configure when all prerequired packages are installed. If iptables-devel is installed, necessary headers should already be in /usr/include
, so that overriding PKG_CONFIG_PATH
, libxtables_CFLAGS
and libxtables_LIBS
variables should not be needed.