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

Android环境集成BoringSSL遇CMake错误:Unknown CMake command perlasm

解决Android环境下BoringSSL编译的perlasm命令错误

错误原因

BoringSSL的子模块CMake脚本(如crypto/fipsmodule/CMakeLists.txt)依赖项目根目录定义的全局CMake函数与配置,perlasm是BoringSSL根目录CMakeLists.txt中定义的自定义命令,用于处理汇编代码。直接单独引用子目录的CMake脚本会导致CMake找不到该自定义命令,从而触发错误。

修复步骤

  • 调整项目结构:将完整的BoringSSL源码放置到项目的Cpp目录下(例如src/main/cpp/boringssl/),必须包含BoringSSL根目录的CMakeLists.txt,不能仅复制部分子目录。
  • 修改build.gradle配置:仅指定BoringSSL根目录的CMake脚本,而非多个子目录脚本:
externalNativeBuild {
    cmake {
        path "src/main/cpp/boringssl/CMakeLists.txt"
    }
}
  • (推荐)通过自定义CMake脚本链接BoringSSL:如果需要将BoringSSL与你的本地代码编译在一起,建议在自己的项目CMakeLists.txt中引入BoringSSL,示例如下:
cmake_minimum_required(VERSION 3.10)
project(YourAppNative)

# 引入BoringSSL子项目
add_subdirectory(boringssl)

# 编译你的本地库
add_library(app-native SHARED your_source.cpp)

# 链接BoringSSL的ssl和crypto库
target_link_libraries(app-native ssl crypto)

此时build.gradle需指向你自己的CMake脚本:

externalNativeBuild {
    cmake {
        path "src/main/cpp/CMakeLists.txt"
    }
}
  • 确保环境有Perl:perlasm命令依赖Perl处理汇编代码,Windows需安装Strawberry Perl,macOS/Linux一般自带Perl,同时确认Android NDK、CMake已正确安装。

验证

重新同步项目并编译,确认perlasm错误消失,保留原有的库加载代码即可:

static {
    System.loadLibrary("ssl");
    System.loadLibrary("crypto");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:32:42