编译 API 动态库

本小节介绍如何在不同的操作系统环境中使用特定的开发工具来编译 API 动态库。具体来说,在 Windows 环境下使用 Visual Studio 2022 或 MinGW 编译、在 Linux 环境下(以 RedHat 为例)编译。

Windows 环境下使用 Visual Studio 2022编译

环境准备

  1. 安装软件 Visual Studio 2022GitCMake
  2. 下载 OpenSSL 库。dll 依赖 OpenSSL 1.1.X 系列版本。本文中的下载目录是 D:/temp/openssl。

代码准备

在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以 main 分支为例,在 Git Bash 中执行如下命令:

git clone https://gitee.com/dolphindb/api-cplusplus.git
git checkout -b main origin/main

编译方法

在 PowerShell 中执行如下命令,即可成功编译出 DolphinDBAPI.dll 和 DolphinDBAPI.lib:

cd path/to/api-cplusplus
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DUSE_AERON=OFF -DUSE_OPENSSL=ON -DOPENSSL_ROOT_DIR=D:/temp/openssl -DCMAKE_CONFIGURATION_TYPES="Release;Debug"
cmake --build . --config Release

cmake 参数说明:

  • -G:用来指定编译器。如果安装为其它版本的 Visual Studio,则此处须对应修改。

  • -A:x64 指定生成 64 位的动态库,Win32 指定生成 32 位的动态库。

  • -DUSE_AERON=OFF:不链接 Aeron 库,即不编译组播流订阅相关代码。

  • -DUSE_OPENSSL=ON:如果想使用 OpenSSL 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译 API 动态库时会去链接 SSL 以及 Crypto 动态库。

  • -DOPENSSL_ROOT_DIR=/path/to/openssl:如果 OpenSSL 没有安装在默认目录,则可以通过该参数来指定 OpenSSL 路径。

  • -DCMAKE_CONFIGURATION_TYPES="Release;Debug":生成的 Visual Studio 项目文件支持编译 Release 或 Debug 类型的动态库。

  • --config Release:生成 Release 类型的目标文件,也可以改为 Debug。

Note: 如果使用的是从上述网址下载的 OpenSSL 库,并且希望编译 64 位的动态库,那么需要在执行 cmake 命令之前,删除该下载的 OpenSSL 库目录中的 bin,include,以及 lib 文件夹,并将 bin64,include64 以及 lib64 文件夹重命名为 bin,include 以及 lib,因为 CMake 会在这些目录中寻找头文件以及库。

Windows 环境下使用 MinGW 编译

环境准备

  1. 安装软件 MinGW,Git,CMake。
  2. OpenSSL 库使用的是 API 源码中 lib 目录下的 openssl-1.0.2u,dll 依赖 OpenSSL 1.0.X 系列版本。

代码准备

在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以 main 分支为例,在 Git Bash 中执行如下命令:

git clone git@gitee.com:dolphindb/api-cplusplus.git
git checkout -b main origin/main

编译方法

在 Power Shell 中执行如下命令,即可成功编译出 libDolphinDBAPI.dll:

cd path/to/api-cplusplus
mkdir build
cd build
cmake .. -G "MinGW Makefiles" -DUSE_AERON=OFF -DUSE_OPENSSL=ON -DOPENSSL_ROOT_DIR=D:/workspace/testCode/api-cplusplus/lib/openssl-1.0.2u/openssl-1.0.2u/static
cmake --build .

cmake 参数说明:

  • -G:用来指定编译器。

  • -DUSE_AERON=OFF: 不链接 Aeron 库,即不编译组播流订阅相关代码

  • -DUSE_OPENSSL=ON: 如果想使用 OpenSSL 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译 API 动态库时会去链接 SSL 以及 Crypto 动态库。

  • -DOPENSSL_ROOT_DIR=/path/to/openssl: 如果 OpenSSL 没有安装在默认目录,则可以通过该参数来指定 OpenSSL 路径。

Linux 环境下编译(以 RedHat 为例)

环境准备

  1. 安装 gcc/g++(version >= 4.8.5),Git,CMake。
  2. 安装Openssl-devel 以及 Uuid-devel
    yum install openssl-devel
    yum install libuuid-devel

代码准备

在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以 main 分支为例,在终端中执行如下命令:

git clone https://gitee.com/dolphindb/api-cplusplus.git
git checkout -b main origin/main

编译方法

在终端中执行如下命令,即可成功编译出 libDolphinDBAPI.so:

cd path/to/api-cplusplus
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_AERON=OFF -DUSE_OPENSSL=ON
make -j4

cmake 参数说明:

  • -DCMAKE_BUILD_TYPE=Release:编译 Release 版本

  • -DUSE_AERON=OFF:不链接 Aeron 库,即不编译组播流订阅相关代码

  • -DUSE_OPENSSL=ON:如果想使用 OpenSSL 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译API动态库时会去链接 SSL 以及 Crypto 动态库。

  • -DDOPENSSL_ROOT_DIR=/path/to/openssl:如果 OpenSSL 没有安装在默认目录,则可以通过该参数来指定 OpenSSL 路径。