You can skip this section if you are familiar with the GNU’ish way of configuring, compiling and installing a GNU package.
Serveez can be found on http://ftp.gnu.org/gnu/serveez/, on one of the mirrors (http://www.gnu.org/prep/ftp.html) or at its original location http://www.lkcc.org/~ela/download/.
Serveez needs GNU Guile (Ubiquitous Intelligent Language for Extensions). The current version of Serveez is known to work with Guile 1.3 and later. Guile can be downloaded at http://ftp.gnu.org/gnu/guile/.
When installing Guile, consider specifying to its configure script options along the lines of:
--enable-static --disable-shared --disable-debug-freelist --disable-debug-malloc --disable-guile-debug --disable-arrays --disable-posix --enable-networking --disable-regex --without-threads --enable-ltdl-convenience
This option set is tuned for Guile 1.4 and may or may not work for your
particular installation; you may need to experiment a bit.
Most important is that the program ‘guile-config’ be findable
in a directory named in the
PATH environment variable.
If not, configuration will fail with message “Guile not found”.
sleepless ~> gzip -cd serveez-0.2.1.tar.gz | tar xvf -
sleepless ~> cd serveez-0.2.1
Normally, this is done by running the configure script in the top-level directory. GNU Serveez needs a reasonably conformant C99 compiler to build. If the configure script is not able to automatically find and enable such a compiler, you can specify it directly using the ‘CC’ command-line option. For example:
sleepless ~> ./configure --prefix /gnu CC='/gnu/bin/gcc'
Note that in this example you can achieve the same results by
making sure /gnu/bin is in the
PATH env var.
In previous Serveez releases, the configure script had some
builtin compiler flags for warnings and optimizations, conveniently
exposed via command-line options. These are no longer available;
instead, you can use
CFLAGS for such purposes (see below).
Here is a complete list of the configure script
options. The list of known options can the obtained via
All of the debug messages (debug: some annoying crap text) can be suppressed by setting the debug level (-v). If you do not want these messages built in at all then disable this feature.
If you enable this feature the control protocol will be supported by Serveez. This protocol is for remote control of the server.
Enabling this feature tells the software package to support the IRC (Internet Relay Chat) protocol.
This feature is only available if you enabled the IRC protocol. If you enabled both of them then Serveez will support the so called TimeStamp protocol, which is an EFNet extension of the original IRC protocol. In order to connect to EFNet you MUST use this option.
When using Serveez as part of the textSure (C) chat system you will will have need of an additional web server. This option makes Serveez support a simple HTTP protocol.
If you enable this feature Serveez will support a simple built-in flood protection. It is always useful to protect the software from flood clients.
When compiling under M$-Windows the DIR argument specifies the path to the extra MinGW32 library and header files. If you want the final executable to use the Cygwin project’s cygwin1.dll instead, you have to disable this option by passing the configure script ‘--without-mingw’ or ‘--with-mingw=no’.
This option enables support for a simple network time protocol server.
If the target system supports
poll and this feature is
enabled the main file descriptor loop is done via
This helps to work around the (g)libc’s file descriptor limit.
Otherwise Serveez always falls back to the
select system call.
This option enables the use of the
sendfile system call.
Disabling it using ‘--disable-sendfile’ provides a work-around
for bogus implementations of
If you do *not* want the Gnutella spider client compiled in you need to *disable* this option.
This option tells Serveez to process any passwords as
If you enable this feature the port forwarder will be included. This is useful if you plan to use Serveez as a gateway or firewall workaround.
By enabling this you will get a fake ident server included in the binary executable.
If you enable this feature the user is able to write servers using Guile.
This includes the program passthrough server in the Serveez binary. The server provides basic inetd functionality.
If Serveez is unable to detect the correct list of local network interfaces (‘serveez -i’) you can disable this option and setup them manually in the configuration file.
This option depends on ‘--enable-debug’. With the debugging option disabled there is also no support for heap counters. The heap counters are used to detect memory leaks in Serveez.
This causes ‘make install’ to also copy libserveez and its
header files to
While Serveez is in alpha (version less than ‘0.8.0’),
this option is disabled by default.
For maximum flexibility and reproducibility, we recommend enabling
warnings and optimizations specifying
CFLAGS as a command-line
option to the configure script. For reference, here is the
collected set of flags built into previous Serveez releases:
(warnings) -W -fullwarn -pedantic -ansi -Wall -Wcast-align -Wstrict-prototypes -Wformat -Wno-unused -Wno-long-long (optimizations) -O2 -fomit-frame-pointer -fstrength-reduce -funroll-loops -finline-functions -fexpensive-optimizations -fcaller-saves -frerun-loop-opt -foptimize-register-move -ffunction-cse -fpeephole -momit-leaf-frame-pointer -fschedule-insns2 -m486 -march=pentiumpro -O3
Note that not all flags may be compatible with your compiler or even each other. That’s one of the reasons we no longer take this approach. See Defining Variables in The Autoconf Manual.
sleepless ~/serveez-0.2.1> ./configure \ CFLAGS='-g -O3 -Wall -Wextra'
sleepless ~/serveez-0.2.1> make
You must have root privileges if you want to install the package in the standard location /usr/local or in any location that is only writable by root.
sleepless ~/serveez-0.2.1> make install
If you have problems building the package out of the box this is due to GNU libtool’s inability to handle dynamic linking in most cases. That is why we recommend to try to configure the package with ‘--disable-shared’.