编译 API 动态库
本小节讲解如何在 Windows 环境下使用 Visual Studio 2022、在 Linux 环境(以 RedHat 为例),以及在 Windows 环境下使用 MinGW 编译出 API 动态库。
Windows 环境下使用 Visual Studio 2022编译
环境准备
- 安装软件 Visual Studio 2022,Git,CMake。
- 下载 OpenSSL 库。本文中的下载目录是 D:/temp/openssl-1.0.2l-vs2017。
代码准备
在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以main分支为例,在 Git Bash 中执行如下命令:
git clone git@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_OPENSSL=1 -DOPENSSL_PATH=D:/temp/openssl-1.0.2l-vs2017 -DCMAKE_CONFIGURATION_TYPES="Release;Debug"
cmake --build . --config Release
cmake 参数说明:
- -G:用来指定编译器。如果安装为其它版本的 Visual Studio,则此处须对应修改。
- -A:x64 指定生成64位的动态库,Win32 指定生成32位的动态库。
- -DUSE_OPENSSL=1:如果想使用 openssl 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译 API 动态库时会去链接 SSL 以及 crypto 动态库。
- -DOPENSSL_PATH=/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 编译
环境准备
- 安装软件 MinGW,Git,CMake。
- OpenSSL 库使用的是 API 源码中 lib 目录下的 openssl-1.0.2u。
代码准备
在 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_OPENSSL=1 -DOPENSSL_PATH=D:/workspace/testCode/api-cplusplus/lib/openssl-1.0.2u/openssl-1.0.2u/static
cmake --build .
cmake 参数说明:
- -G:用来指定编译器。
- -DUSE_OPENSSL=1: 如果想使用 openssl 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译API动态库时会去链接 ssl 以及 crypto 动态库。
- -DOPENSSL_PATH=/path/to/openssl:如果系统中没有安装 openssl,则可以通过该参数来指定 OPENSSL 路径。
Linux 环境下编译(以 RedHat 为例)
环境准备
- 安装 gcc/g++(version >= 4.8.5),Git,CMake。
- 安装Openssl-devel 以及 Uuid-devel。
yum install openssl-devel yum install libuuid-devel
代码准备
在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以 main 分支为例,在终端中执行如下命令:
git clone git@gitee.com:dolphindb/api-cplusplus.git
git checkout -b main origin/main
编译方法
在终端中执行如下命令,即可成功编译出 libDolphinDBAPI.so:
cd path/to/api-cplusplus
mkdir build && cd build
cmake .. -DABI=0 -DUUID_PATH=/home/uuid/ -DUSE_OPENSSL=1 -DOPENSSL_PATH=/home/openssl/
make -j4
cmake 参数说明:
- -DABI=0:用来指定编译时 _GLIBCXX_USE_CXX11_ABI 的值,可以设置为1或者0。
- -DUUID_PATH=/path/to/uuid:如果系统中没有安装 uuid,则可以通过该参数来指定UUID路径,编译时会在。${UUID_PATH}/include 目录下寻找头文件,在${UUID_PATH}/lib 目录下寻找 uuid 库。
- -DUSE_OPENSSL=1:如果想使用 openssl 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译API动态库时会去链接 ssl 以及 crypto 动态库。
- -DOPENSSL_PATH=/path/to/openssl:如果系统中没有安装 openssl,则可以通过该参数来指定 OPENSSL 路径。