/*! \mainpage
qlibs - C library and headers based on "djb's libs" and libowfat
Initially, these libs were excluded from *qmail and forseen to use with eQmail. As the packages of djb (D.J. Bernstein) uses these libs in different versions, there comes up the need to have a consistent state. As time was going on, there was also a need to include additional functionality and up-to-date best practices. Short - this was the point where some parts from libowfat were included.
The current fehQlibs rather accustom to the needs of different OS.
In theorie - these libs can be used with any djb software.
Achievements
- IPv4/IPv6 unification:
The current package supports unified IPv4/IPv6 socket calls, while IPv6 is the default.
- DNS stub-resolver:
The provided DNS stub-resolver is IPv4 and IPv6 aware. See the README in the ./dnsstub directory for details.
Installation
Some build options can be configured through 'conf-build'.
Read the comments in this file for more information.
- Building:
a) Static libs:
Execute
$ make
which does the steps of './configure && make'. Don't forget to make sure that libs and headers will be found by the compiler/linker. For convenience, link the current version of fehQlibs to qlibs
$ ln -s fehQlibs-XY qlibs
b) Shared objects libs:
You can also build dynamic libaries for qlibs and dnsresolv. After
$ make
call
$ make shared
- Deployment:
In case conf-build has been customized to include the location of
- HDRDIR
- LIBDIR
issue
$ make install
to deploy the include files and libs at the given location. By default, for the libs the parent directory is used.
- Verification:
Check the ELFCLASS of the generated binaries in the source directory while calling
$ file open.o
They need to comply with your OS. See 'conf-build' for options.
- Resulting libraries:
The following libraries are generated:
- qlibs.a - static basic [w/o DNS] lib (linked to libqlibs.a)
- dnsresolv.a - static DNS resolver lib (linked to libdnsresolv.a)
and perhaps
- libqlibs.so - dynamic, position independent (PIC) 'shared object' lib
- libdnsresolv.so - dynamic, position independent (PIC) 'shared object' lib
These libs are of type ELF64 or ELF32 depending on the system.
Use 'ar -t' to get the included members of the static libs. Use 'nm' to view the members and symbols of the libs.
Man pages
In the ./man directory the current man pages for the basic qlibs routines are included. Determine the current $mandir and (as root) install the man pages:
$ cp *.3 $mandir/man3/
Packaging
The fehQlibs are incompatible with Gentoo's parallel compilation flag '-jN' for N > 1.
Updated: 20170329, Kai Peter
Updated: 20191107, Erwin Hoffmann