实现WiFi AP模式(一):hostapd的下载与编译

前言

  hostapd是一个用于实现无线局域网(WLAN)访问点(AP)功能的软件,它是一个开源的Linux守护进程。hostapd可以将支持无线网卡的计算机转变为一个功能强大的无线AP,允许其他设备连接并访问无线网络

1、源代码获取

1.1 hostap下载

  • 官网下载链接
  • 指令 :wget --no-check-certificate https://w1.fi/releases/hostapd-2.9.tar.gz
  • Ubuntu下载安装:sudo apt-get install hostapd

1.2、编译依赖库下载

1.2.1、libnl库

  • 官网下载链接

  • 指令下载:wget --no-check-certificate https://github.com/thom311/libnl/releases/download/libnl3_9_0/libnl-3.9.0.tar.gz

1.2.2、openssl库

  • 官网下载链接
  • 指令下载:wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.13.tar.gz

2、编译

2.1、libnl的库编译

  1. 配置指令
./configure --host= --prefix=$PWD/_install

解释说明:
--host:交叉编译工具链
--prefix:库的存放路径,即make install的目录
  1. 编译安装指令
make -j32
make install

2.2、openssl的库编译

  1. 配置指令
./Configure --prefix=$PWD/_install CROSS_COMPILE=

解释说明:
CROSS_COMPILE:交叉编译工具链
--prefix:库的存放路径,即make install的目录
  1. 编译安装指令
make -j32
make install

2.3、hostapd的编译

  1. 设置并配置.config文件
cp defconfig .config

.config文件是hostapd的配置文件,可以根据自己的需求去配置hostapd的支持项
  1. 在Makefile文件里设置依赖库
指定交叉编译链:
CC = 编译器的路径

指定libnl库和头文件路径:
CFLAGS += -I/路径/include/libnl3
LIBS += -L/路径/libnl/lib

指定openssl库和头文件路径
CFLAGS += -I/路径/openssl/include
LIBS += -L/路径/openssl/lib -lssl -lcrypto
  1. 编译
make -j32

3、遇到的问题

3.1、编译libnl库提示缺少bison和flex

  • 提示
configure: WARNING: bison not found. Please install before continuing.
configure: WARNING: flex not found. Please install before continuing.
configure: error: Required packages are missing. Please install them and rerun ./configure

-解决

sudo apt install bison
sudo apt install flex

3.2、编译hostapd报错:No package ‘libnl-3.0’ found

  • 报错
Package libnl-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libnl-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libnl-3.0' found
​
  • 解决
export PKG_CONFIG_PATH=/路径/libnl-3.7.0/_install/lib/pkgconfig/:$PKG_CONFIG_PATH

将2.1里libnl的库安装添加到PKG_CONFIG_PATH变量中

3.3、运行hostapd报错:找不到libssl.so.3库

  • 报错
./hostapd: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
  • 解决方法1:设置$PKG_CONFIG_PATH
 export PKG_CONFIG_PATH=/路径/openssl-3.1.0/_install/lib64:$PKG_CONFIG_PATH

将2.2里openssl的库路径安装添加到PKG_CONFIG_PATH变量中
注意:这个方法只是临时的,而且只有当前命令窗口有用
  • 解决方法2:设置ld.so.conf文件
1、sudo vim /etc/ld.so.conf
2、添加动态库所在目录(每个路径占据一行)
3、运行命令以使更改生效:sudo ldconfig

3.4、运行hostapd显示库文件版本不对

  • 报错
    在这里插入图片描述

  • 原因
    编译时使用的makefile中引用的动态链接库和实际运行时使用的动态链接库不同造成的

  • 解决方法1:设置$LD_LIBRARY_PATH变量

export LD_LIBRARY_PATH=/路径/openssl-3.0.13/_install/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/路径/libnl-3.9.0/_install/lib:$LD_LIBRARY_PATH

注意:这个方法只是临时的,而且只有当前命令窗口有用
  • 解决方法2:设置/etc/environment文件来配置默认$LD_LIBRARY_PATH变量
1、sudo vim /etc/environment
2、在文件里添加:
export LD_LIBRARY_PATH=/路径/openssl-3.0.13/_install/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/路径/libnl-3.9.0/_install/lib:$LD_LIBRARY_PATH
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vis-Lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值