To get a libmysqld library 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 a compiled version of a program, use the
GNU C compiler (gcc). 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:
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 uncompiled C program 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 piece is contained in backticks,
not single quotes.

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.