3.4运行C API客户端程序

如果在升级之后,您在已编译的客户机程序上遇到问题,例如命令不同步或者意外的核心转储,程序可能是使用旧的头文件或库文件编译的。在这种情况下,检查日期mysql.h头文件和libmysqlclient.a库用于编译,以验证它们来自新的MySQL发行版。如果没有,则用新的头文件和库重新编译程序。如果库的主版本号发生了变化(例如,来自libmysqlclient.so.17libmysqlclient.so.18).

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

当您尝试执行MySQL程序时,可能会在运行时发生未定义引用错误。如果这些错误指定符号以mysql_或者表明libmysqlclient库无法找到,这意味着您的系统无法找到共享libmysqlclient.so图书馆。这个问题的解决方案是告诉系统在库所在的目录中搜索共享库。以下任何一种方法适用于你的系统:

  • 添加目录的路径libmysqlclient.so位于LD_LIBRARY_PATHLD_LIBRARY环境变量。

  • 在macOS上,添加目录的路径libmysqlclient.dylib位于DYLD_LIBRARY_PATH环境变量。

  • 复制共享库文件(例如libmysqlclient.so)到系统搜索的某个目录,例如/ lib,并通过执行命令更新共享库信息ldconfig.一定要复制所有相关文件。共享库可能存在于多个名称下,使用符号链接提供替代名称。

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