You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下编译Android版OpenVPN3遇CMake生成失败及头文件缺失问题

Ubuntu下构建Android平台OpenVPN3的OpenSSL依赖问题解决

问题现象

在Ubuntu环境中构建Android平台的OpenVPN3时,出现两类关联问题:

  1. CMake生成阶段失败,提示无法找到OpenSSL::SSL目标
  2. 强行执行make命令后,出现openssl/opensslv.h头文件缺失的编译错误

错误信息

CMake生成错误

CMake Error at test/ovpncli/CMakeLists.txt:10 (add_library):
  Target "xkey" links to target "OpenSSL::SSL" but the target was not found.
  Perhaps a find_package() call is missing for an IMPORTED target, or an
  ALIAS target is missing?


CMake Error at test/ovpncli/CMakeLists.txt:20 (add_executable):
  Target "ovpncli" links to target "OpenSSL::SSL" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?


CMake Error at test/ovpncli/CMakeLists.txt:20 (add_executable):
  Target "ovpncli" links to target "OpenSSL::SSL" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

Make执行错误

[ 20%] Building C object test/ovpncli/CMakeFiles/xkey.dir/__/__/openvpn/openssl/xkey/xkey_helper.c.o
In file included from /home/e03014/e03014/openvpn3/openvpn/openssl/xkey/xkey_helper.c:15:
/home/e03014/e03014/openvpn3/openvpn/openssl/xkey/xkey_common.h:24:10: fatal error: 'openssl/opensslv.h' file not found
   24 | #include <openssl/opensslv.h>
      |          ^~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [test/ovpncli/CMakeFiles/xkey.dir/build.make:76: test/ovpncli/CMakeFiles/xkey.dir/__/__/openvpn/openssl/xkey/xkey_helper.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:190: test/ovpncli/CMakeFiles/xkey.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

使用的CMake命令

cmake -DOPENSSL_ROOT_DIR=../openssl -DOPENSSL_LIBRARY=../openssl/build/lib/libssl.so -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21  -DBUILD_TESTING=OFF -DOPENSSL_CRYPTO_LIBRARY=../openssl/build/lib/libcrypto.so -DOPENSSL_INCLUDE_DIR=/home/userName/userName/openssl/build/include -DASIO_INCLUDE_DIR=/home/userName/userName/asio/asio/include -DLZ4_INCLUDE_DIR=/home/userName/userName/lz4/lib -DLZ4_LIBRARY=/home/userName/userName/lz4/lib/liblz4.so -DOPENVPN3_BUILD_OVPNCLI=OFF -Bbuild

解决步骤

  • 确保OpenSSL为Android交叉编译版本
    不能使用Ubuntu原生编译的OpenSSL库,必须用Android NDK交叉编译对应arm64-v8a架构的版本,确保库文件和头文件都是针对Android平台生成的。

  • 修正CMake路径参数
    将OPENSSL_ROOT_DIR的相对路径替换为绝对路径,避免CMake解析路径时出错;同时验证OPENSSL_INCLUDE_DIR指向的目录下确实存在openssl/opensslv.h文件(路径应为${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h)。

  • 让CMake正确识别OpenSSL导入目标
    在CMake命令中添加-DCMAKE_FIND_ROOT_PATH=/home/userName/userName/openssl/build,指定交叉编译的根目录,帮助CMake找到正确的OpenSSL库;如果使用静态库,可添加-DOPENSSL_USE_STATIC_LIBS=ON参数。

  • 禁用测试目标编译
    虽然设置了BUILD_TESTING=OFF,但错误仍来自test/ovpncli目录,可检查OpenVPN3的CMakeLists.txt是否正确处理该参数,或直接修改CMakeLists.txt禁用相关测试目标的编译。

内容的提问来源于stack exchange,提问作者Mayank Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:05:57