本节涉及 Connector/C++ 到客户端库的动态链接,而不是应用程序到 Connector/C++ 的动态链接。默认情况下,Connector/C++ 的预编译二进制文件使用与客户端库的静态绑定。
使用 Connector/C++ 的应用程序可以静态或动态链接到 Connector/C++ 库。Connector/C++ 通常静态链接到底层的 MySQL 客户端库。
也可以动态链接到底层 MySQL 客户端库,尽管默认情况下未启用此功能。要将 Connector/C++ 动态链接到客户端库,请
MYSQLCLIENT_STATIC_LINKING
在从源构建 Connector/C++ 时禁用:
rm CMakeCache.txt
cmake . -DMYSQLCLIENT_STATIC_LINKING=0
make clean
make
make install
现在,在您的应用程序中创建连接时,Connector/C++ 在运行时选择并加载客户端库。它根据主机操作系统通过搜索定义的位置和环境变量来选择客户端库。在应用程序中创建连接时,也可以定义客户端库的绝对路径以在运行时加载。如果您已定义要从中加载客户端库的标准位置,这会很方便。有时这样做是为了避免与可能位于系统上的其他版本的客户端库发生冲突。
如果MYSQLCLIENT_STATIC_LINKING
禁用启用动态链接到MySQL客户端库,
MYSQLCLIENT_STATIC_BINDING
确定是否链接到共享的MySQL客户端库。默认情况下,MYSQLCLIENT_STATIC_BINDING
启用。如果
MYSQLCLIENT_STATIC_BINDING
禁用,Connector/C++ 不会链接到共享的 MySQL 客户端库。相反,该库是在运行时加载和映射的。