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

Ubuntu下交叉编译ARM架构hostapd遇openssl/bn.h缺失错误求助

解决ARM交叉编译hostapd时找不到openssl/bn.h的问题

兄弟,这个坑我之前踩过无数次——你装的是x86架构的OpenSSL开发包,但交叉编译ARM程序时,编译器找的是ARM架构的头文件和库,根本不会去你本地/usr/include里的x86版本找东西!这就是为啥明明文件存在,还是报找不到的错。

下面给你几个靠谱的解决办法,按顺序试就行:

1. 给交叉编译环境安装ARM版OpenSSL开发库

这是最省心的方法,前提是你的Ubuntu支持multiarch(Ubuntu 18.04+基本都支持):

  • 先添加ARM架构的包支持(以32位ARM为例,64位的话把armhf换成arm64):
    sudo dpkg --add-architecture armhf
    
  • 更新软件源:
    sudo apt update
    
  • 安装ARM版的OpenSSL开发包:
    sudo apt install libssl-dev:armhf
    
  • 之后编译hostapd时,确保正确指定交叉编译器前缀(比如arm-linux-gnueabihf-),编译器会自动去ARM架构的头文件目录查找。

2. 手动交叉编译ARM版OpenSSL(适用于源里没有对应版本的情况)

如果上面的方法不行,就自己编译一份ARM专属的OpenSSL:

  1. 下载OpenSSL稳定版源码(比如从官网下tar包)
  2. 配置交叉编译环境(替换成你的交叉编译器前缀):
    export CC=arm-linux-gnueabihf-gcc
    ./Configure linux-armv4 --prefix=/opt/arm-openssl --openssldir=/opt/arm-openssl
    
  3. 编译并安装:
    make && sudo make install
    
  4. 编译hostapd时,手动指定OpenSSL的路径:
    • 要么在hostapd的Makefile里添加:
      CFLAGS += -I/opt/arm-openssl/include
      LDFLAGS += -L/opt/arm-openssl/lib
      
    • 要么如果hostapd支持configure,就用:
      ./configure --with-openssl=/opt/arm-openssl CC=arm-linux-gnueabihf-gcc
      

3. 检查hostapd的交叉编译配置是否正确

别漏了最基础的一步:编译hostapd时必须明确指定交叉编译工具链,比如:

make CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar LD=arm-linux-gnueabihf-ld

有些版本的hostapd需要在.config文件里配置OpenSSL路径,打开hostapd/.config看看有没有类似CFLAGS += -Ixxx的配置,没有的话手动加上ARM版OpenSSL的头文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:18:17