MySQL 5.7 C API开发指南/ MySQL C API实现

第二章MySQL C API实现

MySQL C API是一个基于C语言的API,客户端应用程序可以使用C语言与MySQL服务器通信。客户端程序在编译时引用C API头文件,在链接时链接到C API库文件。这个库有两个版本,取决于应用程序与服务器通信的方式:

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

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

    请注意

    libmysqld嵌入式服务器库在MySQL 5.7.19中已被弃用,将在MySQL 8.0中被移除。

两个库具有相同的接口。就C API调用而言,应用程序与独立服务器通信的方式与它与嵌入式服务器通信的方式相同。给定的客户机可以构建为与独立服务器或嵌入式服务器通信,这取决于它是否被链接到libmysqlclientlibmysqld在构建时。

为了获得构建C API客户端程序所需的C API头文件和库文件,需要安装MySQL Server分发版。服务器发行版包括以下两种libmysqlclientlibmysqld

您可以安装包含预构建的C API文件的二进制发行版,或者您可以使用源发行版并自己构建C API文件。

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

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

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

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

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

    Windows发行版还包括一组调试库。这些库与非调试库具有相同的名称,但是位于lib /调试图书馆。在编译使用调试C运行时构建的客户端时,必须使用调试库。

在Unix上,您可能还会看到包含_r的名字。在MySQL 5.5之前,这些库被构建为线程安全的(可重入的)库,与非_r库。在5.5版本中,两个库是相同的_r名称是指向对应的非_r的名字。没有必要使用_r库。例如,如果您使用mysql_config要获取链接器标志,可以使用mysql_config——填词在所有情况下,即使是线程化的客户端。没有必要使用mysql_config——libs_r