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

编译LicheePi Zero的U-Boot时出现OpenSSL函数未定义引用问题

解决U-Boot交叉编译时OpenSSL函数未定义引用问题
  • 核心原因
    你当前使用的是主机(x86架构)的OpenSSL库,而交叉编译ARM架构的U-Boot需要对应ARM架构的OpenSSL库,直接添加-lcrypto和-lssl只会让链接器查找主机的库,导致架构不匹配、函数无法找到。

  • 解决步骤

    1. 交叉编译ARM架构的OpenSSL库

      • 下载与U-Boot依赖版本匹配的OpenSSL源码(推荐1.1.x系列,避免版本兼容问题)
      • 配置交叉编译环境:
        ./Configure linux-armhf --prefix=/opt/openssl-arm --cross-compile-prefix=/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
        
        其中--prefix指定ARM版OpenSSL的安装路径,--cross-compile-prefix对应你的交叉编译器前缀
      • 编译并安装:
        make -j$(nproc)
        make install
        
    2. 让U-Boot编译时调用ARM版OpenSSL库
      两种可选方式:

      • 方式一:通过编译参数指定路径
        在原编译命令中添加OpenSSL库和头文件路径:
        make ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- OPENSSL_LIBPATH=/opt/openssl-arm/lib OPENSSL_INCPATH=/opt/openssl-arm/include -V=1
        
      • 方式二:修改U-Boot配置文件
        在U-Boot根目录的.config中添加:
        CONFIG_SYS_OPENSSL_LIB_PATH=/opt/openssl-arm/lib
        CONFIG_SYS_OPENSSL_INCLUDE_PATH=/opt/openssl-arm/include
        
        保存后重新执行原编译命令
    3. 备选方案:禁用U-Boot的OpenSSL依赖
      如果不需要U-Boot的加密、签名验证等功能,可直接关闭相关配置:

      make menuconfig
      

      进入Security features菜单,取消勾选所有依赖OpenSSL的选项(如CONFIG_CMD_BOOTMENU、加密启动相关项),保存配置后重新编译。

  • 排查要点

    • 确认ARM版OpenSSL安装目录下的lib文件夹中存在libcrypto.so和libssl.so文件
    • 检查U-Boot配置是否开启了需要OpenSSL的功能,若误开启可关闭
    • 确保交叉编译器架构(arm-linux-gnueabihf)与OpenSSL配置的目标架构(linux-armhf)匹配

内容的提问来源于stack exchange,提问作者Tomás Arturo Herrera Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:45:35