您只需要在 Windows 上从源代码构建 Connector/ODBC 来修改源代码或安装位置。如果您不确定是否要从源代码安装,请使用 第 4.1 节,“在 Windows 上安装 Connector/ODBC” 中详细介绍的二进制安装。
从 Windows 上的源代码构建 Connector/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。
CMake。
来自 MySQL 8.0 或更高版本的 MySQL 客户端库和包含文件,用于 Connector/ODBC 9.0,或 MySQL 5.7 用于 Connector/ODBC 5.3。这是必需的,因为 Connector/ODBC 使用了在旧版本库中不存在的调用和结构。要获取客户端库和包含文件,请访问 https://dev.mysqlserver.cn/downloads/。
构建步骤
设置 Visual Studio 工具链的环境变量。Visual Studio 包含一个批处理文件,可以为您设置这些变量,并安装一个 开始 菜单快捷方式,该快捷方式打开一个包含这些变量设置的命令提示符。
将 MYSQL_DIR
设置为 MySQL 服务器安装路径,同时使用短文件名样式。例如
C:\> set MYSQL_DIR=C:\PROGRA~1\MySQL\MYSQLS~1.0
通过执行以下命令,使用 cmake 命令行工具从源代码根目录(在命令提示符窗口中)构建 Connector/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_LINKING
选项设置为 TRUE
,并使用 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
之外的 MySQL 客户端库进行动态链接。 cmake 在 MYSQL_LIB_DIR
选项指定的 location 下查找客户端库;如果未指定该选项,则 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
选项相互独立;也就是说,您可以将 Connector/ODBC 动态链接到 Visual C++ 运行时,同时将 Connector/ODBC 静态链接到 MySQL 客户端库,反之亦然。但是,如果您将 Connector/ODBC 动态链接到 Visual C++ 运行时,则还需要链接到本身也动态链接到 Visual C++ 运行时的 MySQL 客户端库;同样,将 Connector/ODBC 静态链接到 Visual C++ 运行时需要链接到本身也静态链接到 Visual C++ 运行时的 MySQL 客户端库。
要编译调试版本,请设置 cmake 构建类型,以便使用 MySQL 客户端库的正确版本;此外,由于 Oracle 构建的 MySQL C 客户端库没有使用调试选项构建,因此在以调试模式构建 Connector/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/
子目录中。
有关如何通过将二进制文件复制到正确的位置并使用 ODBC 管理器注册 Connector/ODBC 来完成安装的说明,请参见 第 4.1.1 节,“使用压缩的 DLL 包安装 Windows Connector/ODBC 驱动程序”。