OpenDBX/Setup/Unix-like/Building from source
Please get the latest version from the download page first.
The compilation itself is a rather easy task. All you need is a standard ANSI C compiler like gcc (tested with 2.95 and above), the make tool and a shell which can execute scripts generated by autoconf/automake.
Calling ./configure in the opendbx directory without arguments only generates Makefiles for the OpenDBX library itself, which isn't useful on its own. You have to tell the script to also create Makefiles for one or more backends. This is done by appending the --with-backends parameter and specifying the backends you want to build:
./configure --with-backends="mysql pgsql sqlite3"
would create Makefiles for the MySQL, PostgreSQL and SQLite3 backends. Possible database identifiers for the --with-backends option are:
- firebird (Firebird/Interbase)
- mssql (MS SQL Server)
- mysql (MySQL server)
- oracle (Oracle version 8 or higher)
- pgsql (PostgreSQL)
- sqlite (SQLite library version 2)
- sqlite3 (SQLite library version 3)
- sybase (Sybase ASE)
If the header files are not installed in /usr/include/, you have to give ./configure some hints where to find them:
CPPFLAGS="-I/usr/include/mysql" ./configure --with-backends="mysql"
will additionally look for the MySQL header files in /usr/include/mysql. The same (also in combination with CPPFLAGS) can be used for library paths. Some distributions install the MySQL libraries in /usr/lib/mysql for example:
LDFLAGS="-L/usr/lib/mysql" ./configure --with-backends="mysql"
Calling "./configure --help" tells you what parameters are allowed and how to use them. If something is missing, ./configure will tell you what it is. In the end you have to call "make" in the package directory to actually compile the source code:
tar xfvz opendbx-x.y-z.tar.gz cd opendbx-x.y.z ./configure --with-backends="mysql" make
A complete example compiling more than one backend with require both CPPFLAGS and LDFLAGS for non-standard file locations would be:
CPPFLAGS="-I/usr/include/postgresql -I/usr/include/mysql" \ LDFLAGS="-L/usr/lib/postgresql -L/usr/lib/mysql" \ ./configure --with-backends="pgsql mysql"
Installation is done by executing "make install" in the package directory. This will copy the libraries to /usr/local/lib and /usr/local/lib/opendbx and the header file to /usr/local/include. Please keep in mind that the files in /usr/local/lib/ are usually not found by the linker if the directory isn't listed in /etc/ld.so.conf.
If you want to install the files somewhere else, for example into the standard locations (/usr/lib, /usr/include and /usr/bin) execute ./configure with --prefix or its related parameters, e.g.
./configure --prefix=/usr --with-backends="sqlite3"
OpenDBX can also be built as single library with the configured backends included in the main library file. This removes the need for loading backends dynamically but is limited afterwards to the backends already included. To enable this option, you have to add another parameter for the configure script:
./configure --enable-singlelib --with-backends="mysql pgsql sqlite3"
From the applications point of view there's no difference between dynamic loading and using built-in backends.
Beginning with OpenDBX 1.3.11, the applications in the "utils/" directory (namely odbx-sql, the swiss army knife for talking to databases interactively or in batch mode) are build by default. This adds a dependency to the readline library for working on the commandline much more comfortable. If you don't want this applications to be built or don't have the readline library available, you can disable it via the configure script:
./configure --disable-utils --with-backends="firebird"