MySQL Connector/C++ 开发者指南  /  从源代码安装 Connector/C++  /  从源代码安装 Connector/C++

4.3 从源代码安装 Connector/C++

要从源代码安装 Connector/C++,请验证您的系统是否满足第 4.1 节,“源代码安装系统先决条件”中概述的要求。

配置 Connector/C++

使用 CMake 来配置和构建 Connector/C++。仅支持源代码外构建,因此请创建一个用于构建的目录并切换到该目录。然后使用以下命令配置构建,其中 concpp_source 是包含 Connector/C++ 源代码的目录

cmake concpp_source

可能需要在配置命令中指定其他选项。一些例子

  • 默认情况下,将使用以下安装位置

    • /usr/local/mysql/connector-c++-8.0 (Unix 和类 Unix 系统)

    • 用户主目录/MySQL/"MySQL Connector C++ 8.0" (Windows)

    要显式指定安装位置,请使用 CMAKE_INSTALL_PREFIX 选项

    -DCMAKE_INSTALL_PREFIX=path_name
  • 在 Windows 上,您可以使用 -G-A 选项来选择特定的生成器

    • -G "Visual Studio 16" -A x64 (64 位构建)

    • -G "Visual Studio 16" -A Win32 (32 位构建)

    查阅 CMake 手册或检查 cmake --help 以了解您的 CMake 版本支持哪些生成器。(但是,您的 CMake 版本可能支持比实际可用于构建 Connector/C++ 更多的生成器。)

  • 如果需要 Boost C++ 库,请使用 WITH_BOOST 选项指定其位置

    -DWITH_BOOST=path_name
  • 默认情况下,构建会创建动态(共享)库。要构建静态库,请启用 BUILD_STATIC 选项

    -DBUILD_STATIC=ON
  • 默认情况下,不会构建传统的 JDBC 连接器。要将 JDBC 连接器包含在构建中,请启用 WITH_JDBC 选项

    -DWITH_JDBC=ON
注意

如果您稍后配置和构建测试程序,请使用与配置 Connector/C++ 时相同的 CMake 选项来配置它们(-GWITH_BOOSTBUILD_STATIC 等)。例外情况:路径名参数将有所不同,并且您不需要指定 CMAKE_INSTALL_PREFIX

有关 CMake 配置选项的信息,请参阅第 4.4 节,“Connector/C++ 源代码配置选项”

指定外部依赖项

使用 CMake 选项来配置和构建 Connector/C++,并使用外部源代码,您可以用它们替换当前与连接器捆绑在一起的所需的第三方依赖项。如果依赖项是外部库,则该库将动态链接到连接器。相反,连接器使用的捆绑第三方库是静态链接到它的。

注意

使用无法动态链接到连接器的外部第三方库会导致构建失败,即使静态库可用也是如此。

支持的选项有

例如,要使用 Protobuf 的外部安装,而不是从捆绑的源代码构建它,请指定 WITH_PROTOBUF 选项并提供 CMake 可以找到替代依赖项的位置的路径名。

注意

如果找不到外部依赖项(或不可用),则构建失败。不会尝试定位捆绑的源代码。

cmake [other_options] -DWITH_PROTOBUF=path_name_to_protobuf_install

要配置外部依赖项的标准系统范围位置,请使用字面值 system 而不是提供路径名。例如

-DWITH_SSL=system

有关 CMake 配置选项的信息,请参阅第 4.4 节,“Connector/C++ 源代码配置选项”

外部依赖项使得使用动态链接到连接器的共享第三方库成为可能。这可能是一个优势,因为例如,您不能将连接器静态库与也链接到 Protobuf 库的应用程序一起使用。

当运行链接到连接器动态库的应用程序时,如果将连接器所依赖的第三方库放置在文件系统中连接器库的旁边,则应该能够正确找到它们。当库安装在标准系统范围的位置时,应用程序也应该可以工作。这假设 Connector/C++ 需要外部第三方依赖项版本。

除 Windows 外,当连接器库和第三方库放置在非标准位置时,应该可以运行链接到连接器动态库的应用程序,前提是在构建应用程序时将这些位置存储为运行时路径(gcc -rpath 选项)。

对于 Windows,只有在以下情况下才能运行链接到连接器共享库的应用程序:

  • 在 Windows 系统文件夹中

  • 与应用程序位于同一文件夹中

  • PATH 环境变量列出的文件夹中

如果应用程序链接到连接器静态库,则仍然需要在前面提到的某个位置找到所需的库。

构建 Connector/C++

配置 Connector/C++ 发行版后,使用以下命令构建它

cmake --build . --config build_type

--config 选项是可选的。它指定要使用的构建配置,例如 ReleaseDebug。如果省略 --config,则默认为 Debug

重要

如果您在上述命令中指定了 --config 选项,请为后续步骤指定相同的 --config 选项,例如安装 Connector/C++ 或构建测试程序的步骤。

如果构建成功,它将在构建目录中创建连接器库。(对于 Windows,请在与为 --config 选项指定的 build_type 值同名的子目录中查找库。)

  • 如果构建动态库,它们将具有以下名称

    • libmysqlcppconn8.so.1 (Unix)

    • libmysqlcppconn8.3.dylib (macOS)

    • mysqlcppconn8-1-vs14.dll (Windows)

  • 如果构建静态库,它们将具有以下名称

    • libmysqlcppconn8-static.a (Unix、macOS)

    • mysqlcppconn8-static.lib (Windows)

如果您启用了 WITH_JDBC 选项以在构建中包含传统的 JDBC 连接器,则会创建以下额外的库文件。

  • 如果构建传统的动态库,它们将具有以下名称

    • libmysqlcppconn.so.7 (Unix)

    • libmysqlcppconn.7.dylib (macOS)

    • mysqlcppconn-7-vs14.dll (Windows)

  • 如果构建传统的静态库,它们将具有以下名称

    • libmysqlcppconn-static.a (Unix、macOS)

    • mysqlcppconn-static.lib (Windows)

安装 Connector/C++

要安装 Connector/C++,请使用以下命令

cmake --build . --target install --config build_type

验证 Connector/C++ 功能

要验证连接器功能,请构建并运行源代码发行版 testapp 目录中包含的一个或多个测试程序。创建一个要使用的目录并切换到该目录。然后发出以下命令

cmake [other_options] -DWITH_CONCPP=concpp_install concpp_source/testapp
cmake --build . --config=build_type

WITH_CONCPP 是一个仅用于配置测试应用程序的选项。 other_options 由您用于配置 Connector/C++ 本身的选项组成(-GWITH_BOOSTBUILD_STATIC 等)。 concpp_source 是包含 Connector/C++ 源代码的目录,concpp_install 是安装 Connector/C++ 的目录

上述命令应该在构建位置的 run 目录中创建 devapi_testxapi_test 程序。如果在配置测试程序时启用了 WITH_JDBC,则构建还会创建 jdbc_test 程序。

在运行测试程序之前,请确保 MySQL 服务器实例正在运行并且启用了 X Plugin。最简单的方法是使用 MySQL 发行版中的 mysql-test-run.pl 脚本。对于 MySQL 8.0,默认情况下启用 X Plugin,因此请在该发行版的 mysql-test 目录中调用以下命令

perl mysql-test-run.pl --start-and-exit

该命令应该启动一个测试服务器实例,该实例启用了 X Plugin 并侦听端口 13009 而不是其标准端口(33060)。

现在您可以运行其中一个测试程序了。它们接受连接字符串参数,因此如果服务器如上所述启动,您可以像这样运行它们

run/devapi_test mysqlx://[email protected]:13009
run/xapi_test mysqlx://[email protected]:13009

连接字符串假定可以使用没有密码的 root 用户帐户,并且程序假定有一个可用的 test 模式(使用 mysql-test-run.pl 启动的服务器满足这些假设)。

要测试 jdbc_test,您需要一台 MySQL 服务器,但不需要 X Plugin。此外,连接选项必须采用 JDBC API 指定的形式。将用户名作为第二个参数传递。例如

run/jdbc_test tcp://127.0.0.1:13009 root