3.4 运行 C API 客户端程序

如果在升级后,您在编译客户端程序时遇到问题,例如Commands out of sync意外的核心转储,则这些程序可能是使用旧的头文件或库文件编译的。在这种情况下,检查用于编译的 mysql.h头文件和 libmysqlclient.a库的日期以验证它们来自新的 MySQL 发行版。如果不是,请使用新的头文件和库重新编译程序。libmysqlclient.so.17如果库的主要版本号已更改(例如,从到 libmysqlclient.so.18) ,则针对共享客户端库编译的程序也可能需要重新编译 。

主要的共享客户端库版本决定了兼容性。(例如,对于libmysqlclient.so.18.1.0,主要版本是 18。)较新版本的 MySQL 附带的库是具有相同主要编号的旧版本的直接替代品。只要主要库版本相同,您就可以升级库,旧应用程序应该可以继续使用它。

当您尝试执行 MySQL 程序时,可能会在运行时发生未定义引用错误。如果这些错误指定的符号以开头mysql_或表示 libmysqlclient找不到库,则表示您的系统找不到共享 libmysqlclient.so库。这个问题的解决方案是告诉您的系统在该库所在的目录中搜索共享库。使用以下任何一种适合您的系统的方法:

  • 将所在目录的路径添加 libmysqlclient.soLD_LIBRARY_PATHor LD_LIBRARY环境变量中。

  • 在 macOS 上,将所在目录的路径添加 libmysqlclient.dylibDYLD_LIBRARY_PATH环境变量中。

  • 将共享库文件(如 libmysqlclient.so)复制到系统搜索到的某个目录,如/lib,并通过执行更新共享库信息 ldconfig。请务必复制所有相关文件。共享库可能以多个名称存在,使用符号链接提供备用名称。

如果应用程序链接到嵌入式服务器库,运行时错误消息将指示libmysqld 而不是libmysqlclient库,但问题的解决方案与刚才描述的相同。