27.6.1 使用 libmysqld 编译程序

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

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

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

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

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

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

紧随 gcc 命令之后的是 C 程序源文件的名称。在此之后,提供-o选项以指示后面的文件名是编译器要赋予输出文件(已编译程序)的名称。下一行代码告诉编译器获取包含文件和库的位置以及编译它的系统的其他设置。 mysql_config命令包含在反引号中,而不是单引号引起来。

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