开发环境准备:操作系统、编程语言、依赖库安装
说实话,很多同学在集成加密 SDK 时,80% 的坑都出在环境配置上。不是库版本冲突,就是编译工具链不对。我最早接手一个数据防泄漏项目时,光配环境就折腾了两天——后来发现只是 OpenSSL 版本装错了。所以这一章,咱们把基础打牢。
操作系统选型:别在兼容性上翻车
你需要一个稳定、支持主流加密库的操作系统。我个人习惯这样选:
| 操作系统 | 推荐版本 | 适用场景 | 我踩过的坑 |
|---|---|---|---|
| Linux (Ubuntu) | 20.04 LTS 或 22.04 LTS | 生产环境首选 | 曾经用 Ubuntu 18.04 装 libcurl,系统自带 OpenSSL 1.0.2,跟 SDK 不兼容 |
| CentOS / Rocky Linux | 8.x 或 9.x | 企业合规要求 | 记得装 epel-release,否则缺一堆依赖 |
| Windows | Windows 10/11 + WSL2 | 本地开发测试 | 原生 Windows 编译 OpenSSL 太痛苦,建议直接上 WSL2 |
| macOS | 12+ (Monterey) | 前端集成调试 | Homebrew 装完记得检查链接路径,别跟系统库冲突 |
编程语言选择:C 是核心,但得配好工具链
我们选的加密 SDK 底层是 C 写的,所以必须准备 C 编译环境。其他语言是封装层,你可以根据业务再配。
我建议这么搭:
- 必备:GCC 9+ 或 Clang 12+(Linux/macOS) / MSVC 2022(Windows)
- 建议:CMake 3.16+(管理构建,减少手工写 Makefile 的麻烦)
- 可选:Python 3.8+(用来跑自动化脚本和测试用例)
- 注意:Go 1.18+ 如果你后面要集成 Go 封装层的话,现在可以先不装
为什么会先把 Python 列进来?我之前在项目里写了个小脚本,自动拉取 SDK 的最新版本、校验哈希、解压、跑单元测试。省了不少人工重复劳动。你想想看,要是每次升级 SDK 都手动来一遍,那得多烦。
依赖库安装:OpenSSL + libcurl + json-c 是铁三角
加密 SDK 几乎都依赖这三个库:OpenSSL(加密)、libcurl(网络传输)、json-c(配置解析)。咱们一个一个来装。
Linux(Ubuntu 为例)
# 更新包列表
sudo apt update
# 安装 OpenSSL 开发库(包含头文件)
sudo apt install libssl-dev
# 安装 libcurl
sudo apt install libcurl4-openssl-dev
# 安装 json-c
sudo apt install libjson-c-dev
# 安装编译工具
sudo apt install build-essential cmake git
apt list --installed | grep ssl 检查一下。我曾经遇到过系统装了两个 OpenSSL,结果链接到旧版本,签名验签死活不过。解决办法是手动用 ldconfig 配一下优先级。
macOS(Homebrew)
brew install openssl@3 curl json-c cmake
# 把 OpenSSL 加入环境变量
echo 'export PATH="/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/usr/local/opt/openssl@3/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/usr/local/opt/openssl@3/include"' >> ~/.zshrc
这里要提醒一下:macOS 自带的 LibreSSL 跟 OpenSSL 有细微差异。我吃过一次亏——调用 EVP_EncryptInit_ex 时参数顺序不同,在 macOS 上跑得好好的,部署到 Linux 就崩。所以务必统一用 Homebrew 的 OpenSSL。
Windows(WSL2 或 MSYS2)
老实说,我不建议在原生 Windows 上折腾 C 编译。如果你非要在 Windows 上做开发,用 WSL2 最省事。也可以试试 MSYS2:
pacman -S mingw-w64-x86_64-openssl mingw-w64-x86_64-curl mingw-w64-x86_64-json-c mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
vcpkg install openssl curl json-c 。但注意 vcpkg 默认安装的是动态库,我们 SDK 需要静态链接,所以得加 --triplet x64-windows-static。
环境验证:写个简单的加解密测试
东西都装好了,怎么确定没装错?我每次都会写一个最短的 C 程序来验证:
#include <stdio.h>
#include <openssl/evp.h>
int main() {
OpenSSL_add_all_algorithms();
printf("OpenSSL version: %s\n", OpenSSL_version(OPENSSL_VERSION));
printf("libcurl version: %s\n", curl_version());
printf("json-c version: %s\n", json_c_version());
return 0;
}
编译命令:
gcc -o check_env check_env.c -lssl -lcrypto -lcurl -ljson-c
能正常跑出版本号,说明环境通了。如果报错找不到库,先检查一下 pkg-config 返回值:
pkg-config --cflags --libs openssl
pkg-config --cflags --libs libcurl
pkg-config --cflags --libs json-c
哪个缺就补哪个。我曾经在 CentOS 8 上就因为 pkg-config 的路径没配好,折腾了半小时才发现。
知识体系全景:开发环境准备结构图
最后检查清单
照着下面列表过一遍,一个都不能少:
- 系统版本符合上述推荐(Linux 优先)
- 安装了 C 编译器,能用
gcc --version看到版本号 - CMake >= 3.16,
cmake --version可运行 - OpenSSL 开发包已安装,
openssl version能输出版本 - libcurl 和 json-c 的
.h文件在系统头文件路径下 - 跑通了上述 check_env.c 的编译和运行
pkg-config能找到三个库
嗯,到这步环境就算齐了。别嫌啰嗦,这一步做扎实了,后面集成 SDK 那真是顺风顺水。