您只需要在 Windows 上從原始碼建置 Connector/ODBC 以修改原始碼或安裝位置。如果您不確定是否要從原始碼安裝,請使用 第 4.1 節,〈在 Windows 上安裝 Connector/ODBC〉中詳述的二進位安裝。
在 Windows 上從原始碼建置 Connector/ODBC 需要許多不同的工具和套件
MDAC,來自 https://www.microsoft.com/en-in/download/details.aspx?id=21995 的 Microsoft Data Access 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),或用於 Connector/ODBC 5.3 的 MySQL 5.7。這是必要的,因為 Connector/ODBC 使用舊版程式庫中不存在的呼叫和結構。若要取得用戶端程式庫和包含檔案,請造訪 https://mysqldev.dev.org.tw/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
選項指定的位置下尋找用戶端程式庫;如果未指定選項,cmake 會在 MYSQL_DIR
選項指定之資料夾內的預設位置下尋找。
自 Connector/ODBC 8.0.11 起,使用 BUNDLE_DEPENDENCIES
將外部程式庫執行階段相依性 (例如 OpenSSL) 與連線器一起安裝。對於從 MySQL 用戶端程式庫繼承的相依性,只有在這些相依性與用戶端程式庫本身捆綁在一起時才有效。
INFO_SRC
:此檔案提供有關產品版本和產生發行版本的原始程式碼儲存庫的資訊。已在 Connector/ODBC 8.0.14 中新增。
您可以選擇將 Connector/ODBC 與 Visual C++ 執行階段靜態 (相當於 Visual Studio 中的 /MT 編譯器選項) 或動態 (相當於 Visual Studio 中的 /MD 編譯器選項) 連結。預設選項是動態連結;如果您想要靜態連結,請將選項 STATIC_MSVCRT:BOOL=TRUE
設定為,即
C:\> cmake -G "Visual Studio 12 2013" -DSTATIC_MSVCRT:BOOL=TRUE
STATIC_MSVCRT
選項和 MYSQLCLIENT_STATIC_LINKING
選項彼此獨立;也就是說,您可以在與 MySQL 用戶端程式庫靜態連結時,將 Connector/ODBC 動態連結至 Visual C++ 執行階段,反之亦然。但是,如果將 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/
子目錄中。
請參閱 第 4.1.1 節,〈使用壓縮 DLL 套件安裝 Windows Connector/ODBC 驅動程式〉,瞭解如何透過將二進位檔複製到正確位置並向 ODBC 管理員註冊 Connector/ODBC 來完成安裝。