In precompiled binary MySQL distributions that include
libmysqld, the embedded server library, MySQL
builds the library using the appropriate vendor compiler if
there is one.
To get a libmysqld library if you build MySQL
from source yourself, you should configure MySQL with the
--with-embedded-server option. See
Section 2.9.2, “Typical configure Options”.
When you link your program with libmysqld,
you must also include the system-specific
pthread libraries and some libraries that the
MySQL server uses. You can get the full list of libraries by
executing mysql_config --libmysqld-libs.
The correct flags for compiling and linking a threaded program must be used, even if you do not directly call any thread functions in your code.
To compile a C program to include the necessary files to embed the MySQL server library into an executable version of a program, the compiler will need to know where to find various files and need instructions on how to compile the program. The following example shows how a program could be compiled from the command line, assuming that you are using gcc, use the GNU C compiler:
gcc mysql_test.c -o mysql_test -lz \ `/usr/local/mysql/bin/mysql_config --include --libmysqld-libs`
Immediately following the gcc command is the
name of the C program source file. After it, the
-o option is given to indicate that the file
name that follows is the name that the compiler is to give to
the output file, the compiled program. The next line of code
tells the compiler to obtain the location of the include files
and libraries and other settings for the system on which it's
compiled. Because of a problem with
mysql_config, the option -lz
(for compression) is added here. The
mysql_config command is contained in
backticks, not single quotes.
On some non-gcc platforms, the embedded library depends on C++ runtime libraries and linking against the embedded library might result in missing-symbol errors. To solve this, link using a C++ compiler or explicitly list the required libraries on the link command line.

User Comments
You may need to include libwrap in order to compile a program. It wasn't present in the output of 'mysql_config --libmysqld-libs' on my system.
If you are going to use the Embedded MySQL Server with C#, you MUST re-compile MySQL with the USE_TLS pre-processor constant defined in the "mysys" project. Otherwise the mysql_server_init() function call will fail.
Add your own comment.