84 lines
3.5 KiB
Text
84 lines
3.5 KiB
Text
Linux is basically Unix, so README-Unix.txt covers the generic bits.
|
|
I'll just cover a few of the issues specific to Linux here.
|
|
|
|
|
|
Prerequisite: Install the MySQL Development Files
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
MySQL++ is built on top of the MySQL C API library, so it needs the
|
|
C API development files to build against. Most distributions of
|
|
the MySQL server for Linux don't come with these development files;
|
|
they're packaged separately. This is because you don't actually
|
|
need the server on your development machine, though it's often more
|
|
convenient to use a local server than a remote one, for testing.
|
|
|
|
There are about as many different ways to get the C API development
|
|
files on your system as there are major Linux distributions.
|
|
More actually, because you also have the option of the official
|
|
MySQL binaries from mysql.com:
|
|
|
|
http://dev.mysql.com/downloads/mysql/5.0.html#linux
|
|
|
|
For RPM-based distributions, MySQL comes in several different
|
|
packages. You need at least the -devel and the -shared packages
|
|
to build MySQL++.
|
|
|
|
The other binary distributions seem to come in just a single file,
|
|
presumably with everything included.
|
|
|
|
You can also build from source, in which case you will also get
|
|
the entire kit and kaboodle.
|
|
|
|
MySQL frequently comes with Linux distributions as well. If your
|
|
distribution doesn't come with at least MySQL v4.1, I recommend
|
|
using the official MySQL.com packages instead. MySQL++ can be
|
|
made to run with 4.0 and older, but it takes some work.
|
|
|
|
On Red Hat type systems with yum, say:
|
|
|
|
# yum install mysql-devel
|
|
|
|
If you want to use rpm directly, you need that package and probably
|
|
the base mysql package as well.
|
|
|
|
On Debian/Ubuntu type systems, say:
|
|
|
|
$ sudo apt-get install libmysqlclient15-dev
|
|
|
|
The version number is the ABI version of the MySQL C API library.
|
|
ABI version 15 corresponds to MySQL version 5.0, the recommended
|
|
stable version as of this writing.
|
|
|
|
|
|
Dealing with the Dynamic Linker, ld.so
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ld.so is a system-level program on Linux which is used to run any
|
|
program that uses shared libraries (lib*.so). Its job is to find
|
|
the libraries and link them to the base executable so it will run.
|
|
|
|
Because ld.so only looks in a few places for libraries on most
|
|
systems, a common problem is a program that builds without error
|
|
but won't run, complaining about libmysqlpp.SOMETHING.
|
|
|
|
There are a number of ways to deal with this.
|
|
|
|
First, you could just configure MySQL++ to install under /usr
|
|
instead of /usr/local, like system-provided packages:
|
|
|
|
$ ./configure --prefix=/usr
|
|
|
|
This isn't recommended practice when building packages from source,
|
|
but it does work.
|
|
|
|
Second, you can add the MySQL++ library directory to the
|
|
LD_LIBRARY_PATH environment variable. This works like the shell's
|
|
PATH variable: a colon-separated list of directories to search.
|
|
This is best when the installation directory is something totally
|
|
uncommon, or you don't have root permissions on the box so you
|
|
can't do the next option.
|
|
|
|
Finally, the most robust way to tell ld.so about a nonstandard
|
|
library directory is to put it in /etc/ld.so.conf or in one of
|
|
the files included from there. Then, run ldconfig as root to
|
|
rebuild the cache file ld.so uses to find libraries in these
|
|
nonstandard directories. Running ldconfig isn't necessary for
|
|
the previous two methods.
|