MySQL 5.7 C API 开发者指南  /  第 2 章 MySQL C API 实现

第 2 章 MySQL C API 实现

MySQL C API 是一个基于 C 的 API,用 C 编写的客户端应用程序可以用来与 MySQL 服务器通信。客户端程序在编译时引用 C API 头文件,并在链接时链接到 C API 库文件。该库有两个版本,具体取决于应用程序打算如何与服务器通信:

  • libmysqlclient:库的客户端版本,用于作为独立服务器进程的客户端通过网络连接进行通信的应用程序。

  • libmysqld:库的嵌入式服务器版本,用于旨在在应用程序本身中包含嵌入式 MySQL 服务器的应用程序。应用程序与其自己的私有服务器实例通信。

    笔记

    嵌入式服务器库从libmysqldMySQL 5.7.19 开始弃用,并在 MySQL 8.0 中删除。

这两个库具有相同的界面。在 C API 调用方面,应用程序与独立服务器通信的方式与它与嵌入式服务器通信的方式相同。可以构建给定的客户端以与独立或嵌入式服务器通信,具体取决于它是针对链接 libmysqlclient还是libmysqld 在构建时链接。

要获取构建 C API 客户端程序所需的 C API 头文件和库文件,请安装 MySQL 服务器分发版。服务器发行版包括libmysqlclientlibmysqld.

您可以安装包含预构建的 C API 文件的二进制分发版,或者您可以使用 MySQL 服务器源代码分发版并自行构建 C API 文件。构建 MySQL 服务器也构建libmysqlclientlibmysqld;请参阅 从源代码安装 MySQL。这些客户端库不能单独构建,但可选的 -DWITHOUT_SERVER=ON CMake 选项是相关的。

链接 C API 客户端应用程序时要使用的库文件的名称取决于为其构建分发的库类型和平台:

  • 在 Unix(和类 Unix)系统上,静态库是 libmysqlclient.a. 动态库 libmysqlclient.so在大多数 Unix 系统和libmysqlclient.dylibmacOS 上都有。

    对于包含嵌入式服务器库的发行版,相应的库名称以 .libmysqld而不是 libmysqlclient.

  • 在 Windows 上,静态库是 mysqlclient.lib,动态库是libmysql.dll. Windows 发行版还包括libmysql.lib使用动态库所需的静态导入库。

    对于包含嵌入式服务器库的发行版,相应的库名称为 mysqlserver.liblibmysqld.dlllibmysqld.lib

    Windows 发行版还包括一组调试库。它们与非调试库同名,但位于lib/debug库中。在编译使用调试 C 运行时构建的客户端时,您必须使用调试库。

在 Unix 上,您可能还会看到 _r名称中包含的库。在 MySQL 5.5 之前,这些是作为线程安全(可重入)库与非库分开构建的_r。从 5.5 开始,两个库是相同的,_r名称是指向相应非_r名称的符号链接。无需使用_r库。例如,如果您使用mysql_config获取链接器标志,则在所有情况下都可以使用mysql_config --libs,即使对于线程客户端也是如此。无需使用 mysql_config --libs_r