MySQL 连接器/ODBC 开发人员指南  / 第 4 章连接器/ODBC 安装  /  4.4 在 Windows 上从源分发构建连接器/ODBC

4.4 在 Windows 上从源分发构建连接器/ODBC

您只需要在 Windows 上从源代码构建连接器/ODBC 即可修改源代码或安装位置。如果您不确定是否从源安装,请使用 第 4.1 节“在 Windows 上安装连接器/ODBC”中详述的二进制安装。

在 Windows 上从源代码构建连接器/ODBC 需要许多不同的工具和包:

  • MDAC,来自 https://www.microsoft.com/en-in/download/details.aspx?id=21995的 Microsoft 数据访问 SDK 。

  • 合适的 C++ 编译器,例如 Microsoft Visual C++ 或 Microsoft Visual Studio 2015 或更高版本中包含的 C++ 编译器。编译Connector/ODBC 5.3可以使用VS 2013。

  • 制作。

  • MySQL 客户端库和包含来自 MySQL 8.0 或更高版本(用于连接器/ODBC 8.0)或 MySQL 5.7(用于连接器/ODBC 5.3)的文件。这是必需的,因为连接器/ODBC 使用旧版本库中不存在的调用和结构。要获取客户端库和包含文件,请访问 https://mysql.net.cn/downloads/

构建步骤

为 Visual Studio 工具链设置环境变量。Visual Studio 包括一个批处理文件来为您设置这些,并安装一个开始菜单快捷方式,该快捷方式打开一个命令提示符,其中设置了这些变量。

设置MYSQL_DIR为MySQL服务器安装路径,同时使用短格式文件名。例如:

C:\> set MYSQL_DIR=C:\PROGRA~1\MySQL\MYSQLS~1.0

通过从源根目录(在命令提示符窗口中)执行以下命令, 使用cmake命令行工具 构建连接器/ODBC :

C:\> cmake -G "Visual Studio 12 2013"

这会生成一个项目文件,您可以使用 Visual Studio 打开该文件,或者使用以下任一命令从命令行生成:

C:\> devenv.com MySQL_Connector_ODBC.sln /build Release

从源代码构建 Connector/ODBC 时,默认选择与 MySQL 客户端库的动态链接——即默认选择 MYSQLCLIENT_STATIC_LINKING cmake选项FALSE(但是,来自 Oracle 的 Connector/ODBC 的二进制分发静态链接到客户端库)。如果要静态链接到 MySQL 客户端库,请将选项设置 MYSQLCLIENT_STATIC_LINKINGTRUE,并使用该 MYSQLCLIENT_LIB_NAME选项为静态链接提供客户端库的名称:

C:\> cmake -G "Visual Studio 12 2013" -DMYSQLCLIENT_STATIC_LINKING:BOOL=TRUE  \
 DMYSQLCLIENT_LIB_NAME=client_lib_name_with_extension

还可以使用该MYSQLCLIENT_LIB_NAME选项动态链接到除 libmysql.dll. cmake 在选项指定的位置下查找客户端库 MYSQL_LIB_DIR;如果未指定该选项,cmake将在该选项指定的文件夹内的默认位置下查找 MYSQL_DIR

自 Connector/ODBC 8.0.11 起,用于BUNDLE_DEPENDENCIES 与连接器一起安装外部库运行时依赖项,例如 OpenSSL。对于从 MySQL 客户端库继承的依赖项,这仅在这些依赖项与客户端库本身捆绑在一起时才有效。

INFO_SRC:此文件提供有关产品版本和生成分发的源存储库的信息。在 Connector/ODBC 8.0.14 中添加。

可以选择将 Connector/ODBC 静态链接(相当于 Visual Studio 中的 /MT 编译器选项)或动态链接(相当于 Visual Studio 中的 /MD 编译器选项)到 Visual C++ 运行时。默认选项是动态链接;如果你想静态链接,设置选项 STATIC_MSVCRT:BOOL=TRUE,即:

C:\> cmake -G "Visual Studio 12 2013" -DSTATIC_MSVCRT:BOOL=TRUE

STATIC_MSVCRT期权与 期权MYSQLCLIENT_STATIC_LINKING相互独立;也就是说,您可以将连接器/ODBC 动态链接到 Visual C++ 运行时,同时静态链接到 MySQL 客户端库,反之亦然。但是,如果将连接器/ODBC 动态链接到 Visual C++ 运行时,则还需要链接到本身动态链接到 Visual C++ 运行时的 MySQL 客户端库;同样,将连接器/ODBC 静态链接到 Visual C++ 运行时需要链接到 MySQL 客户端库,该库本身静态链接到 Visual C++ 运行时。

要编译调试版本,请设置cmake构建类型,以便使用正确版本的 MySQL 客户端库;此外,由于 Oracle 构建的 MySQL C 客户端库使用调试选项构建,因此在以调试模式构建连接器/ODBC 时链接到它时,请使用该 WITH_NODEFAULTLIB选项告诉 cmake忽略默认的非调试 C++ 运行时:

C:\> cmake -G "Visual Studio 14 2015" -DWITH_DEBUG=1  -DWITH_NODEFAULTLIB=libcmt

然后使用以下命令创建调试版本:

C:\> devenv.com MySQL_Connector_ODBC.sln /build Debug

完成后,可执行文件位于 bin/lib/ 子目录中。

请参阅 第 4.1.1 节“使用压缩 DLL 包安装 Windows 连接器/ODBC 驱动程序” ,了解如何通过将二进制文件复制到正确位置并使用 ODBC 管理器注册连接器/ODBC 来完成安装。