The dklibs package contains a set of libraries and some
applications to support the use of the libraries.
The following libraries are contained in the package:
The following programs are included in the package:
Which license terms are applied to the package?
Where can I get the latest version?
This project is hosted on SourceForge, check http://dklibs.sourceforge.net/ for
information.
The download area is below the project page http://sourcforge.net/projects/dklibs/
What does "system preparation" mean?
Before you install this software or any of the
required/recommended libraries you must make sure the software can
be built.
The C compiler must be ready to use both header files distributed
with your system and as a part of additional software. The linker
must be configured to use the both system libraries and additional
libraries.
Some C compilers and linkers are only pre-configured to use
libraries shipped with the OS or with the compiler, but no
additional libraries. In such cases you need to extend the search
paths.
If additional software is installed into /usr/local (found on many
Unix/Linux systems), /sw (found on MacOS) or /opt/another-directory
(just an example) the C compiler must be configured to search for
header files in /usr/local/include, /sw/include and
/opt/another-directory/include in addition to the default
directories. The linker must be configured to search for library
files in /usr/local/lib, /sw/lib and
/opt/another-directory/lib.
Why doesn't the configure script handle an incomplete setup?
[gcc] How can I report the include search path?
Type
gcc -v -E -
and press CTRL-D after inspecting the output.
Normally the library search path is corresponding to the include
search path, the final "include" subdirectory is replaced by
"lib".
How can I set the search paths?
You can set the environment variables CFLAGS and LDFLAGS, i.e.
CPPFLAGS="-I/usr/local/include -I/sw/include -I/opt/another-directory/include" CFLAGS="-I/usr/local/include -I/sw/include -I/opt/another-directory/include" LDFLAGS="-L/usr/local/lib -L/sw/lib -L/opt/another-directory/lib" export CPPFLAGS CFLAGS LDFLAGS
To have the settings available immediately after each login, add a section
if [ "X$CPPFLAGS" = "X" ] then CPPFLAGS="-I/usr/local/include -I/sw/include -I/opt/another-directory/include" else CPPFLAGS="$CPPFLAGS -I/usr/local/include -I/sw/include -I/opt/another-directory/include" fi if [ "X$CFLAGS" = "X" ] then CFLAGS="-I/usr/local/include -I/sw/include -I/opt/another-directory/include" else CFLAGS="$CFLAGS -I/usr/local/include -I/sw/include -I/opt/another-directory/include" fi if [ "X$LDFLAGS" = "X" ] then LDFLAGS="-L/usr/local/lib -L/sw/lib -L/opt/another-directory/lib" else LDFLAGS="$LDFLAGS -L/usr/local/lib -L/sw/lib -L/opt/another-directory/lib" fi export CPPFLAGS CFLAGS LDFLAGS
to your .profile file.
To make the settings available to all users, add the section to
/etc/profile.
Note: Different shells might use different file names and
a different syntax.
[gcc] How can I set default search paths?
For gcc you can use environment variables instead of command line options to extend the search paths. Add
if [ "X$C_INCLUDE_PATH" = "X" ] then C_INCLUDE_PATH="/usr/local/include:/sw/include:/opt/another-directory/include" else C_INCLUDE_PATH="${C_INCLUDE_PATH}:/usr/local/include:/sw/include:/opt/another-directory/include" fi if [ "X$CPP_INCLUDE_PATH" = "X" ] then CPP_INCLUDE_PATH="/usr/local/include:/sw/include:/opt/another-directory/include" else CPP_INCLUDE_PATH="${CPP_INCLUDE_PATH}:/usr/local/include:/sw/include:/opt/another-directory/include" fi if [ "X$LIBRARY_PATH" = "X" ] then LIBRARY_PATH="/usr/local/include:/sw/include:/opt/another-directory/include" else LIBRARY_PATH="${LIBRARY_PATH}:/usr/local/include:/sw/include:/opt/another-directory/include" fi export C_INCLUDE_PATH CPP_INCLUDE_PATH LIBRARY_PATH
either to your .profile (for a user-specific setup) or to
/etc/profile (for a system-wide setup).
Note: Different shells might use different file names and
a different syntax.
Which libraries should I install before building dklibs?
I installed gzip and bzip2. Why do I get error messages about zlib.h and/or bzlib.h files not found?
Make sure to install the include files and other files for development process too! For some Linux distributions the header files for library xyz are in a package having "xyz-devel" or "xyz-developer" in the name.
How do I handle incompatible versions of recommended libraries?
The configure script only checks for the presence of header files in most cases. For some libraries there are significant API changes between different versions. Run
make clean
and edit config.h manually to remove the "HAVE_..." lines
enabling the problematic header files.
Run
make
again.
Example: Disabling use of the Berkeley DB
The dklibs module dksdbdb was written to use BDB 4.5. If you have
version 4.4 you may get compilation errors when compiling
dksdbdb.c.
The main header file for Berkeley DB is ``db.h''.
So run
make clean
and edit the ``config.h'' file.
Replace
#define HAVE_DB_H 1
by
#define HAVE_DB_H 0
and continue compilation.
How do I build and install the software
After unpacking the archive using (version number may differ)
gzip -dc dklibs-1.8.0-tar.gz | tar xvf -
change into the new "dklibs" directory and run
./configure make make install
[Mac OS + Fink] Are there special installation instructions?
Note: I'm not a Mac user, so I can not give very detailed information. But I'll attempt to describe the process here.
CFLAGS="-I/sw/include $CFLAGS" CPPFLAGS="-I/sw/include $CPPFLAGS" LDFLAGS="-L/sw/lib $LDFLAGS" export CFLAGS export CPPFLAGS export LDFLAGS ./configureIf you have a 64-bit version of Fink, you might have an /sw64 directory instead of /sw. If you have a /sw64 directory you need to replace all occurances of ``/sw'' by ``/sw64'' in the commands shown above.
#define HAVE_DB_H 1by
#define HAVE_DB_H 0
make make install
CFLAGS="-I/sw/include -I/usr/local/include $CFLAGS" CPPFLAGS="-I/sw/include -I/usr/local/include $CPPFLAGS" LDFLAGS="-L/sw/lib -L/usr/local/lib $LDFLAGS" export CFLAGS export CPPFLAGS export LDFLAGSAgain, if you have an ``/sw64'' directory instead of ``/sw'' you must replace all occurances of ``/sw'' by ``/sw64'' in the commands shown above.
[Linux] How do I build shared libraries?
./configure make -f Makefile-shared-linux make -f Makefile-shared-linux install
[Solaris, Sun Workshop compiler] How do I build shared libraries?
./configure make -f Makefile-shared-solaris-workshop make -f Makefile-shared-solaris-workshop install
How can I get help using the configure script?
The usual options can be provided to the configure script, run
./configure --help
to see a list of possible options.
How do I prepare a directory tree to create an installation package?
Run
./configure make make pp=/home/joe/package install
to create the directory structure needed to prepare a package in the /home/joe/package directory.
Are there executable setup programs to install the software`
There are two different executable setup packages available from
the dklibs-win32 package in the downloads section on the SourcForge project page. Both packages not only
contain dklibs but also some of my applications using the
libraries.
The dklibs-win32-user-*.exe is the recommended setup, it installs
binaries and documentation on the local computer.
The dklibs-win32-base-*.exe only installs the binaries,
documentation start menu entries will point to web resources. Use
this setup only if you really need to save disk space and your
computer is permanently connected to the internet.
Why do setup executables contain the applications too?
There are dependencies between the software packages, the
applications need some file shipped with the libaries to run (i.e.
string tables for error messages...). Registry entries are needed
to find directories. When using different setup executables for
libraries and applications users might choose different
installation directories what will end up in file-not-found
errors.
Keeping all things in one setup executable make it easier to do a
consistent setup.
How can I build the software from source?
The installation from source is described in detail in the inst_w32.html file.
After installing the software, what should I do next?
Follow the Post installation steps described in install.html.
Where should CFLAGS and LDFLAGS point to when installing dklibs-based applications?
Both variables must point to the include/lib subdirectory of the dklibs installation directory, not the source directory.
The dklibs library set uses an include file "dkconfig.h" which comes in two versions:
If the first version is used while installing dklibs-based applications the compiler includes a "config.h" file. But it will not find the file for dklibs, it will used the "config.h" file for the application instead. A lot of #define's will be missing.
UNICODE is a character set using 32 bits. Documents using this
character set can use characters/glyphs from different
languages.
UTF-8 is an encoding for UNICODE characters using 1 byte for the
glyphs used most often and up to 6 bytes (48 bits) for the
not-so-popular glyphs.
What problems can occur when using UTF-8 encoding?
The same glyph is encoded differently when using UTF-8 and traditional encodings. An application showing text must know whether or not the text is UTF-8 encoded or not.
What's the problem with Fig files and UTF-8?
The Fig file format does not allow to provide information
whether or not UTF-8 is used.
So there are two ways to tell applications processing Fig files
which encoding is used:
[Unix/Linux] How will I know whether or not UTF-8 is used?
Check the LANG environment variable. If it ends on ``.UTF-8''
(not case-sensitive) -- like ``de_DE.UTF-8'' your system uses UTF-8
encoding.
If it does not end on ``.UTF-8'' -- i.e. ``de_DE'' -- your system
does not use UTF-8 encoding.
How does my graphical desktop handle native characters?
Handling of native characters (i.e. german umlauts) depends on the systems LANG setting.
Can I simply change the LANG environment variable for one program?
No, don't do that! All desktop applications must use the same
UTF-8 setting. You may change LANG from ``de_DE'' to ``en_US'' or
from ``de_DE.UTF-8'' to ``en_US.UTF-8'', but not from
``de_DE'' to ``de_DE.UTF-8''.
If you want to change the UTF-8 usage, log in as root (or
Administrator), change the setting globally -- i.e. in
/etc/sysconfig/i18n -- and reboot the system.
If the desktop delivers not-UTF-8 encoded data and an application
expects UTF-8 encoded data (or vice versa) there is a wide variety
of results: unknown keyboard bindings, application crashes...
How do Fig drawing applications handle UTF-8 encoding?
How do fig2vect, text2lat and echo2lat handle UTF-8 encoding?
Fig2vect cares about UTF-8 encoded text in non-special text
only.
In special text you can use LaTeX code directly to produce the
glyphs you need.
Handling UTF-8 encoded strings depends on the driver:
In text2lat and echo2lat input text is UTF-8 decoded if necessary, the programs replace each character by the corresponding LaTeX encoding. Text2lat allows to specify whether or not newlines are replaced by ``\\<newline>'' and whether or not spaces are replaced by ``~''.
How are LaTeX encodings found, how do I create my own tables?
The dklibs library set uses a preference to find a shared
directory (shared between all dklibs-based applications). This
directory is /usr/local/share on Unix/Linux and
c:\programme\krause\share on Windows by default. The
``c:\programme'' part can differ, it depends on your Windows
version and language.
This directory contains a sub-directory ``uc2lat-t'' providing
tables for translation from UNICODE to LaTeX. There is a nested
directory structure containing multiple files. Files are loaded on
demand.
The encoding for UNICODE 0x01234567 is found by searching the file
01/23/45.dat file for an 0x67 entry.
There are three types of entries in the file:
Example (from 00/00/00.dat):
* 0x23 \# t 0x2A \textasteriskcentered{} m 0x2A * t 0x3C \textless{} m 0x3C <
If you have created or modified tables, please share them! If you are willing to publish them under BSD-style license conditions (the license used by dklibs), please use the bug-tracking or feature-request mechanisms or forums on SourceForge (http://sourceforge.net/projects/dklibs/) to submit the tables.
The Tracecc GUI is a Java application providing a graphical user interface to the tracecc program.
Which version of Java is required to run the Tracecc GUI?
The Tracecc GUI requires the Java Runtime Environment in version 1.5 (sometimes referred to as Java 5). I recommend to use the current JRE available on http://java.sun.com.
Why do I get a class loader exception when starting the Tracecc GUI?
Most likely you are using an insufficient JRE implementation,
which does not provide all the classes needed by the
Tracecc GUI.
Make sure to use the up-to-date JRE from http://java.sun.com.
How do I localize the Tracecc GUI to my language?
./buildscript to create a new *.jar file.