23.6.1 用 libmysqld 编译程序

在包含 libmysqld嵌入式服务器库的预编译二进制 MySQL 发行版中,MySQL 使用适当的供应商编译器构建库(如果有的话)。

如果您自己从源代码构建 MySQL,要获取libmysqld库,您应该使用该 -DWITH_EMBEDDED_SERVER=1选项配置 MySQL。请参阅 第 2.9.7 节,“MySQL 源配置选项”

当您将您的程序与 链接时libmysqld,您还必须包括系统特定的pthread 库和 MySQL 服务器使用的一些库。您可以通过执行mysql_config --libmysqld-libs获取完整的库列表。

必须使用用于编译和链接线程程序的正确标志,即使您没有在代码中直接调用任何线程函数。

要编译 C 程序以包含将 MySQL 服务器库嵌入到程序的可执行版本中所需的文件,编译器需要知道在哪里可以找到各种文件,并且需要有关如何编译程序的说明。以下示例显示了如何从命令行编译程序,假设您使用的是gcc,使用 GNU C 编译器:

gcc mysql_test.c -o mysql_test \
`/usr/local/mysql/bin/mysql_config --include --libmysqld-libs`

紧跟在gcc命令之后的是 C 程序源文件的名称。在它之后, -o给出的选项表明后面的文件名是编译器要给输出文件即编译程序的名称。下一行代码告诉编译器获取包含文件和库的位置以及编译它的系统的其他设置。mysql_config命令包含在反引号中,而 不是单引号中。

在某些非gcc平台上,嵌入式库依赖于 C++ 运行时库,并且链接到嵌入式库可能会导致丢失符号错误。要解决此问题,请使用 C++ 编译器进行链接或在链接命令行上显式列出所需的库。