Generic Build Instructions
Contents
The instructions on this page will help you compile MariaDB from source. Links to more complete instructions for specific platforms can be found on the source page.
First, get a copy of the MariaDB source.
Next, prepare your system to be able to compile the source.
If you don't want to run MariaDB as yourself, then you should create a
mysql
user. The example below uses this user.
Using cmake
MariaDB 5.5 and above is compiled using cmake.
It is recommended to create a build directory beside your source directory
mkdir build-mariadb cd build-mariadb
You can configure your build simply by running cmake without any special options, like
cmake ../server
where server
is where you installed MariaDB. If you are building in the source directory, just omit ../server
.
If you want it to be configured exactly as a normal MariaDB server release is built, use
cmake ../server -DBUILD_CONFIG=mysql_release
To do a build suitable for debugging use:
cmake ../server -DCMAKE_BUILD_TYPE=Debug
All cmake configuration options for MariaDB can be displayed with:
cmake ../server -LH
To build and install MariaDB after running cmake use
make sudo make install
If the commands above fail, you can enable more compilation information by doing:
make VERBOSE=1
Using BUILD scripts
There are also BUILD
scripts for the most common systems for those that doesn't want to dig into cmake options. These are optimized for in source builds.
The scripts are of type 'compile-#cpu#-how_to_build'. Some common scripts-are
Script | Description |
---|---|
compile-pentium64 | Compile an optimized binary optimized for 64 bit pentium (works also for amd64) |
compile-pentium-debug | Compile a debug binary optimized for 64 bit pentium |
compile-pentium-valgrind-max | Compile a debug binary that can be used with valgrind to find wrong memory accesses and memory leaks. Should be used if one want's to run the mysql-test-run test suite with the --valgrind option |
Some common suffix used for the scripts:
Suffix | Description |
---|---|
32 | Compile for 32 bit cpu's |
64 | Compile for 64 bit cpu's |
-max | Enable (almost) all features and plugins that MariaDB supports |
-gprof | binary is compiled with profiling (gcc --pg) |
-gcov | binary is compiled with code coverage (gcc -fprofile-arcs -ftest-coverage) |
-valgrind | The binary is compiled for debugging and optimized to be used with valgrind. |
-debug | The binary is compiled with all symbols (gcc -g) and the DBUG log system is enabled. |
All BUILD
scripts supports the options:
Suffix | Description |
---|---|
-h, --help | Show this help message. |
-n, --just-print | Don't actually run any commands; just print them. |
-c, --just-configure | Stop after running configure. Combined with --just-print shows configure options. |
--extra-configs=xxx | Add this to configure options |
--extra-flags=xxx | Add this C and CXX flags |
--extra-cflags=xxx | Add this to C flags |
--extra-cxxflags=xxx | Add this to CXX flags |
--verbose | Print out full compile lines |
--with-debug=full | Build with full debug(no optimizations, keep call stack). |
A typical compilation used by a developer would be:
shell> ./BUILD/compile-pentium64-debug
This configures the source for debugging and runs make. The server binary will be sql/mysqld
.
Starting MariaDB for the first time
After installing MariaDB (using sudo make install
), but prior to starting MariaDB for the first time, one should:
- ensure the directory where you installed MariaDB is owned by the mysql user (if the user doesn't exist, you'll need to create it)
- run the
mysql_install_db
script to generate the needed system tables
Here is an example:
# The following assumes that the 'mysql' user exists and that we installed MariaDB # in /usr/local/mysql chown -R mysql /usr/local/mysql/ cd /usr/local/mysql/ scripts/mysql_install_db --user=mysql /usr/local/mysql/bin/mysqld_safe --user=mysql &
Testing MariaDB
If you want to test your compiled MariaDB, you can do either of:
make test
or
mysql-test/mysql-test-run --force
Each of the above are run from the source directory. There is no need to 'sudo make install
' MariaDB prior to running them.
NOTE: If you are doing more extensive testing or debugging of MariaDB (like with real application data and workloads) you may want to start and run MariaDB directly from the source directory instead of installing it with 'sudo make install
'. If so, see
Running MariaDB from the Source Directory.
Increasing version number or tagging a version
If you have made code changes and want to increase the version number or tag our version with a specific tag you can do this by editing the VERSION
file. Tags are shown when running the 'mysqld --version
' command.
Non-ascii symbols
MariaDB builds with readline
; using an alternative such as Editline
may result in problems with non-ascii symbols.