MySQL 8.0 C API Developer Guide
The MySQL C API is a C-based API that client applications written
in C can use to communicate with MySQL Server. Client programs
refer to C API header files at compile time and link to a C API
library file, libmysqlclient, at link time.
To obtain the C API header and library files required to build C API client programs, install a MySQL Server distribution.
You can install a binary distribution that contains the C API
files pre-built, or you can use a MySQL Server source distribution
and build the C API files yourself. Building MySQL Server also
builds libmysqlclient; see
Installing MySQL from Source. It cannot be built alone,
but configuring with the optional
-DWITHOUT_SERVER=ON
CMake option is related.
The names of the library files to use when linking C API client applications depend on the library type and platform for which a distribution is built:
On Unix (and Unix-like) systems, the static library is
libmysqlclient.a. The dynamic library is
libmysqlclient.so on most Unix systems
and libmysqlclient.dylib on macOS.
On Windows, the static library is
mysqlclient.lib and the dynamic library
is libmysql.dll. Windows distributions
also include libmysql.lib, a static
import library needed for using the dynamic library.
Windows distributions also include a set of debug libraries.
These have the same names as the nondebug libraries, but are
located in the lib/debug library. You
must use the debug libraries when compiling clients built
using the debug C runtime.
On Unix, you may also see libraries that include
_r in the names. Before MySQL 5.5, these were
built as thread-safe (re-entrant) libraries separately from the
non-_r libraries. As of 5.5, both libraries are
the same and the _r names are symbolic links to
the corresponding non-_r names. There is no
need to use the _r libraries. For example, if
you use mysql_config to obtain linker flags,
you can use mysql_config --libs in all cases,
even for threaded clients. There is no need to use
mysql_config --libs_r.