(mysql.info) configure-options
Info Catalog
(mysql.info) quick-install
(mysql.info) installing-source
(mysql.info) installing-source-tree
2.8.2 Typical `configure' Options
---------------------------------
The `configure' script gives you a great deal of control over how you
configure a MySQL source distribution. Typically you do this using
options on the `configure' command line. You can also affect
`configure' using certain environment variables. See
environment-variables. For a list of options supported by
`configure', run this command:
shell> ./configure --help
Some of the more commonly used `configure' options are described here:
* To compile just the MySQL client libraries and client programs and
not the server, use the -without-server option:
shell> ./configure --without-server
If you have no C++ compiler, `mysql' cannot be compiled (it is the
one client program that requires C++). In this case, you can
remove the code in `configure' that tests for the C++ compiler and
then run `./configure' with the -without-server option. The
compile step should still try to build `mysql', but you can ignore
any warnings about `mysql.cc'. (If `make' stops, try `make -k' to
tell it to continue with the rest of the build even if errors
occur.)
* If you want to build the embedded MySQL library (`libmysqld.a'),
use the -with-embedded-server option.
* If you don't want your log files and database directories located
under `/usr/local/var', use a `configure' command something like
one of these:
shell> ./configure --prefix=/usr/local/mysql
shell> ./configure --prefix=/usr/local \
--localstatedir=/usr/local/mysql/data
The first command changes the installation prefix so that
everything is installed under `/usr/local/mysql' rather than the
default of `/usr/local'. The second command preserves the default
installation prefix, but overrides the default location for
database directories (normally `/usr/local/var') and changes it to
`/usr/local/mysql/data'.
You can also specify the locations at server startup time by using
a MySQL option file. See option-files.
* If you are using Unix and you want the MySQL socket file location
to be somewhere other than the default location (normally in the
directory `/tmp' or `/var/run'), use a `configure' command like
this:
shell> ./configure \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
The socket filename must be an absolute pathname. You can also
change the location of `mysql.sock' at server startup by using a
MySQL option file. See problems-with-mysql-sock.
* If you want to compile statically linked programs (for example, to
make a binary distribution, to get better performance, or to work
around problems with some Red Hat Linux distributions), run
`configure' like this:
shell> ./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
* If you are using `gcc' and don't have `libg++' or `libstdc++'
installed, you can tell `configure' to use `gcc' as your C++
compiler:
shell> CC=gcc CXX=gcc ./configure
When you use `gcc' as your C++ compiler, it does not attempt to
link in `libg++' or `libstdc++'. This may be a good thing to do
even if you have those libraries installed. Some versions of them
have caused strange problems for MySQL users in the past.
The following list indicates some compilers and environment
variable settings that are commonly used with each one.
* `gcc' 2.7.2:
CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
* `egcs' 1.0.3a:
CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors \
-fno-exceptions -fno-rtti"
* `gcc' 2.95.2:
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
-felide-constructors -fno-exceptions -fno-rtti"
* `pgcc' 2.90.29 or newer:
CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
-felide-constructors -fno-exceptions -fno-rtti"
In most cases, you can get a reasonably optimized MySQL binary by
using the options from the preceding list and adding the following
options to the `configure' line:
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
The full `configure' line would, in other words, be something like
the following for all recent `gcc' versions:
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
-felide-constructors -fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
The binaries we provide on the MySQL Web site at
`http://dev.mysql.com/downloads/' are all compiled with full
optimization and should be perfect for most users. See
mysql-binaries. There are some configuration settings you can
tweak to build an even faster binary, but these are only for
advanced users. See compile-and-link-options.
If the build fails and produces errors about your compiler or
linker not being able to create the shared library
`libmysqlclient.so.N' (where N is a version number), you can work
around this problem by giving the -disable-shared option to
`configure'. In this case, `configure' does not build a shared
`libmysqlclient.so.N' library.
* By default, MySQL uses the `latin1' (cp1252 West European)
character set. To change the default set, use the -with-charset
option:
shell> ./configure --with-charset=CHARSET
CHARSET may be one of `big5', `cp1251', `cp1257', `czech',
`danish', `dec8', `dos', `euc_kr', `gb2312', `gbk', `german1',
`hebrew', `hp8', `hungarian', `koi8_ru', `koi8_ukr', `latin1',
`latin2', `sjis', `swe7', `tis620', `ujis', `usa7', or
`win1251ukr'. See character-sets.
The default collation may also be specified. MySQL uses the
`latin1_swedish_ci' collation by default. To change this, use the
-with-collation option:
shell> ./configure --with-collation=COLLATION
To change both the character set and the collation, use both the
-with-charset and -with-collation options. The collation must be a
legal collation for the character set. (Use the `SHOW COLLATION'
statement to determine which collations are available for each
character set.)
If you want to convert characters between the server and the
client, you should use the `SET NAMES' statement. See
set-option, and charset-connection.
*Warning:* If you change character sets after having created any
tables, you must run `myisamchk -r -q
--set-collation=COLLATION_NAME' _on every table_. Your indexes may
be sorted incorrectly otherwise. This can happen if you install
MySQL, create some tables, and then reconfigure MySQL to use a
different character set and reinstall it.
With the `configure' option -with-extra-charsets=LIST, you can
define which additional character sets should be compiled into the
server. LIST is one of the following:
* A list of character set names separated by spaces
* `complex' to include all character sets that can't be
dynamically loaded
* `all' to include all character sets into the binaries
* To configure MySQL with debugging code, use the -with-debug option:
shell> ./configure --with-debug
This causes a safe memory allocator to be included that can find
some errors and that provides output about what is happening. See
debugging-server.
* If your client programs are using threads, you must compile a
thread-safe version of the MySQL client library with the
-enable-thread-safe-client configure option. This creates a
`libmysqlclient_r' library with which you should link your threaded
applications. See threaded-clients.
* It is possible to build MySQL 5.0 with large table support using
the -with-big-tables option, beginning with MySQL 5.0.4.
This option causes the variables used to keep table row counts to
be stored using `unsigned long long' rather than `unsigned long'.
What this does is to allow tables to hold up to approximately
1.844E+19 ((232)2) rows rather than 232 (~4.295E+09) rows.
Previously it was necessary to pass -DBIG_TABLES to the compiler
manually in order to enable this feature.
* Options that pertain to particular operating systems can be found
in the system-specific section of this manual. See
operating-system-specific-notes.
Info Catalog
(mysql.info) quick-install
(mysql.info) installing-source
(mysql.info) installing-source-tree
automatically generated byinfo2html