Harmony鸿蒙基于libssh2源码打包so
为实际路径): /Users/simon/Library/OpenHarmony/Sdk/12/native。验证:CMake输出中出现--Using crypto backend:WolfSSL,表示配置成功.操作目标:配置libssh:2的编译参数,使其使用步骤2编译的WolfSSL。重新配置CMake (指定Wolfssl的路径)方式2:多行命令(需用\连接, \后不能有空格)方式:单行命令
·
首先下载libssh2源码
simon@U-PD23M24Q-1838 Custom % git clone https://github.com/libssh2/libssh2
由于鸿蒙的systomroot中没有内置OpenSSL加密库,所以需要指定一个 ,这里采用 WolfSSL作为加密后端(libssh2官方支持,且适配性更好)
下载WolfSSL源码
simon@U-PD23M24Q-1838 Custom % git clone https://github.com/wolfSSL/wolfssl.git
simon@U-PD23M24Q-1838 Custom % cd wolfssl
# 切换到稳定版本(如5.6.0)
simon@U-PD23M24Q-1838 Custom % git checkout v5.6.0-stable
创建 WolfSSL 的鸿蒙交叉编译配置文件
在 wolfssl 源码根目录创建harmonyos.toolchain.cmake,内容如下(替换<鸿蒙SDK路径>为实际路径): /Users/simon/Library/OpenHarmony/Sdk/12/native
set(CMAKE_SYSTEM_NAME HarmonyOS)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
# 鸿蒙工具链路径 # 例如:/Users/simon/Library/OpenHarmony/Sdk/12/native
set(HARMONYOS_SDK "<鸿蒙SDK路径>/native")
set(TOOLCHAIN_BIN "${HARMONYOS_SDK}/llvm/bin")
# 指定编译器
set(CMAKE_C_COMPILER "${TOOLCHAIN_BIN}/clang")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_BIN}/clang++")
# 目标架构和系统根目录
set(CMAKE_C_FLAGS "-target aarch64-linux-ohos -march=armv8-a -fPIC")
set(CMAKE_SYSROOT "${HARMONYOS_SDK}/sysroot")
# WolfSSL配置:启用libssh2兼容模式,禁用冗余功能
set(WOLFSSL_DISABLE_TESTS ON) # 禁用测试
set(WOLFSSL_LIBSSH2 ON) # 启用对libssh2的支持
set(ENABLE_OPENSSL_COMPAT ON) # 兼容OpenSSL接口(libssh2依赖)
set(NO_MD4 ON) # 禁用不安全算法
set(NO_HC128 ON)
set(BUILD_SHARED_LIBS OFF) # 静态编译(避免鸿蒙缺动态库)
编译并安装WolfSSL
# 创建构建目录
simon@U-PD23M24Q-1838 wolfssl % mkdir build_harmony && cd build_harmony
# 配置CMake(使用上述工具链文件)
simon@U-PD23M24Q-1838 build_harmony % cmake .. -DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=./output # 安装到当前目录的output文件夹
# 配置Cmake 执行如下命令
simon@U-PD23M24Q-1838 build_harmony % cmake .. \
-DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=./output \
-DBUILD_SHARED_LIBS=OFF \
-DWOLFSSL_LIBSSH2=ON \
-DENABLE_OPENSSL_COMPAT=ON \
-DNO_MD4=ON \
-DWOLFSSL_DISABLE_TESTS=ON
# 编译(-j4表示4线程加速)
simon@U-PD23M24Q-1838 build_harmony % make -j4
# 安装(生成头文件和库文件)
simon@U-PD23M24Q-1838 build_harmony % make install
验证是否Cmake 显示指定关键选项
WOLFSSL_LIBSSH2:BOOL=ON ENABLE_OPENSSL_COMPAT:BOOL=ON
grep -E "WOLFSSL_LIBSSH2|ENABLE_OPENSSL_COMPAT" /Users/simon/Custom/wolfssl/build_harmony/CMakeCache.txt
#输出如下才正确
WOLFSSL_LIBSSH2:BOOL=ON
ENABLE_OPENSSL_COMPAT:BOOL=ON
验证产物
验证:进入build_harmony/output目录,确认存在:
include/wolfssl/:头文件(如ssl.h)lib/libwolfssl.a:静态库(核心文件)

让 libssh2 链接 WolfSSL
操作目标:配置libssh:2的编译参数,使其使用步骤2编译的WolfSSL。
进入libssh2的编译目录(假设之前已创建ouild_harmony目录):
重新配置CMake (指定Wolfssl的路径)
注意: \后面不能有空格
# 替换<WolfSSL安装路径>为步骤2中WolfSSL的output目录(如../wolfssl/build_harmony/output)
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \ # 之前创建的libssh2工具链文件
-DBUILD_SHARED_LIBS=ON \ # 生成libssh2.so动态库
-DCMAKE_INSTALL_PREFIX=./output \ # libssh2的安装路径
-DCRYPTO_BACKEND=WolfSSL \ # 强制使用WolfSSL
-DWOLFSSL_ROOT_DIR="<WolfSSL安装路径>" \ # WolfSSL的根目录
-DWOLFSSL_INCLUDE_DIR="<WolfSSL安装路径>/include" \ # WolfSSL头文件目录
-DWOLFSSL_LIBRARY="<WolfSSL安装路径>/lib/libwolfssl.a" # WolfSSL静态库路径
验证:CMake输出中出现--Using crypto backend:WolfSSL,表示配置成功.
正确的CMake命令格式(单行或带换行符):
方式:单行命令(推荐新手使用,避免格式错误)
方式2:多行命令(需用\连接, \后不能有空格)
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=./output \
-DCRYPTO_BACKEND=WolfSSL \
-DWOLFSSL_ROOT_DIR="/Users/simon/Custom/wolfssl/build_harmony/output" \
-DWOLFSSL_INCLUDE_DIR="/Users/simon/Custom/wolfssl/build_harmony/output/include" \
-DWOLFSSL_LIBRARY="/Users/simon/Custom/wolfssl/build_harmony/output/lib/libwolfssl.a"
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \
-DWOLFSSL_LIBSSH2=ON \
-DENABLE_OPENSSL_COMPAT=ON \
-DCMAKE_INSTALL_PREFIX=./output \
-DWOLFSSL_ROOT_DIR=/Users/simon/Custom/wolfssl/build_harmony/output \
-DWOLFSSL_INCLUDE_DIR=/Users/simon/Custom/wolfssl/build_harmony/output/include \
-DWOLFSSL_LIBRARY=/Users/simon/Custom/wolfssl/build_harmony/output/lib/libwolfssl.a \
-DLIBSSH2_CRYPTO_BACKEND=wolfssl
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \
-DWOLFSSL_LIBSSH2=ON \
-DENABLE_OPENSSL_COMPAT=ON \
-DCMAKE_INSTALL_PREFIX=./output \
-DCMAKE_C_FLAGS="/Users/simon/Custom/wolfssl/build_harmony/output/include" \
-DCMAKE_EXE_LINKER_FLAGS="/Users/simon/Custom/wolfssl/build_harmony/output/lib -lwolfssl" \
-DWOLFSSL_ROOT_DIR=/Users/simon/Custom/wolfssl/build_harmony/output \
-DWOLFSSL_INCLUDE_DIR=/Users/simon/Custom/wolfssl/build_harmony/output/include \
-DWOLFSSL_LIBRARY=/Users/simon/Custom/wolfssl/build_harmony/output/lib/libwolfssl.a \
-DLIBSSH2_CRYPTO_BACKEND=wolfssl
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=../harmonyos.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=./output \
-DBUILD_SHARED_LIBS=OFF \
-DWOLFSSL_LIBSSH2=ON \
-DENABLE_OPENSSL_COMPAT=ON \
-DNO_MD4=ON \
-DWOLFSSL_DISABLE_TESTS=ON
更多推荐
所有评论(0)