本節說明建置 Connector/C++ 應用程式時,特定於 Linux 的方面。通用 Linux 套件不包含 Connector/C++ 靜態程式庫。如需一般應用程式建置資訊,請參閱 第 5.1 節,「建置 Connector/C++ 應用程式:一般考量」。
Connector/C++ 8.0.32 為 ARM 架構 (64 位元) 提供通用 Linux 套件。所有 Connector/C++ 版本都為 Intel 架構 (32 位元和 64 位元) 提供通用 Linux 套件。
先前,通用 Linux 套件是在 EL7 平台上建置的,而該平台上的 GCC 設定為使用較舊的 libstdc++
ABI。程式庫匯出的某些符號在其名稱中包含標準程式庫類型,因此與新的 CXX11
ABI 不相容,而新的 CXX11
ABI 是大多數平台上 (EL7 除外) 現代 GCC 的預設設定。因此,除非您在 EL7 上建置程式碼,並使用 GCC6 或更新版本的編譯器,否則預設會使用新的 CXX11
ABI,並尋找其中具有新 ABI 名稱的 Connector/C++ 符號。
從 Connector/C++ 8.0.30 開始,Connector/C++ 使用新的 CXX11 ABI。進行此變更後,當您使用從通用 Linux 套件安裝的 Connector/C++ 時,可能會遇到以下問題
從 Connector/C++ 8.0.29 (或更早版本) 升級到 8.0.30 (或更新版本) 後,即使先前版本的 Connector/C++ 執行成功,也可能會產生執行階段錯誤。
它不適用於 GCC5 或更早版本,因為舊的編譯器使用舊的 ABI,且無法連結到使用新 ABI 的程式碼。
它不適用於 EL6、EL7 或任何其他修改 GCC 設定以預設使用舊 ABI 的平台。不過,在這種情況下,有一個解決方法是在
-D_GLIBCXX_USE_CXX11_ABI=1
下建置程式碼。
對於大多數平台 (包括 EL8),GCC 預設已變更為新的 ABI。