详细记录丨Realtek RTL8188FU WiFi 命令编译
道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人!加油,骚年!
Hello 大家好,上篇文章我总结了 WiFi 驱动移植及内核配置的教程。
本篇文章介绍一下 WiFi 相关命令的交叉编译,希望对您能有帮助!
1 参考资料
1、编译过程,部分参考资料如下:
- 【推荐】Linux 添加 WiFi 驱动(https://blog.csdn.net/sbddbfm/article/details/101222266)
- linux下wifi工具iw的交叉编译(https://blog.csdn.net/weixin_42432281/article/details/85786866)
- rtl8188 驱动移植 wifi工具移植(https://blog.csdn.net/wmdshhzsmile/article/details/102792811)
- rtl8188 驱动移植 wifi工具移植(https://blog.csdn.net/wmdshhzsmile/article/details/102792811)
- rtl8188etv 无线网卡驱动移植(https://blog.csdn.net/imlsq/article/details/72844532)
2、解决问题,部分参考资料如下:
- 【问题1】line 1: syntax error: unexpected word (expecting “)”)(https://blog.csdn.net/qq_26093511/article/details/78932765)
- 【问题2】wifi模块配置ap模式下出现的问题(https://blog.csdn.net/qq_41877422/article/details/103194360)
3、还有一些其他前辈的教程,十分感谢!
2 环境介绍
1、Ubuntu18.04 ,不加密环境,版本信息如下:
zhaoc@Ubuntu1804:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bioniczhaoc@Ubuntu1804:~$ uname -a
Linux Ubuntu1804 5.4.0-54-generic #60~18.04.1-Ubuntu SMP Fri Nov 6 17:25:16 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
2、Linux 内核版本:4.4.179 ;
3、交叉编译链版本
arm-none-linux-gnueabi-gccgcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
3 简要说明
1、简要记录驱动移植过程中,交叉编译的命令、依赖库。
2、简要说明作用及版本等信息。
3.1 iw
1、使用的命令版本:4.9
目前发现 5.0 及以上版本用 arm-linux-gcc 编译都会报错,疑似交叉编译工具的 gcc 版本太低;
2、iw
命令是 iwconfig
命令的替代者,是 Linux 系统上的一款无线配置工具;
(1)参考资料:https://blog.csdn.net/qq_26602023/article/details/106115823
3、文件系统路径:/sbin
4、教程按照 v0.8.x_rtw_r24647.20171025
版本进行编译;
3.2 wpa_cli
1、使用的命令版本:wpa_cli v0.8.x_rtw_r24647.20171025
2、wpa_cli
用来查看设备当前连接 WiFi 状态;
3、文件系统路径:/usr/sbin
3.3 wpa_passphrase
1、使用的命令版本:未知;(应该与 wpa_cli
一致,即 v0.8.x_rtw_r24647.20171025
,使用的同一个源码包)
2、暂时未用到此命令;
3、文件系统路径:/usr/sbin
3.4 wpa_supplicant
1、使用的命令版本:wpa_supplicant v2.9
2、命令作用:
(1)用于连接 WPA/WPA2
加密方式的 WiFi ;
(2)非加密方式的 WiFi ,也可使用此命令连接;
3、文件系统路径:/usr/sbin
3.5 hostapd
1、使用的命令版本:hostapd v2.9
2、命令作用:
(1)配置 WiFi 开启 AP 模式;
(2)参考帮助文档,描述如下:
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
3、文件系统路径:/bin
3.6 hostapd_cli
1、使用的命令版本:hostapd_cli v2.9
2、暂未使用;
3、文件系统路径:/bin
3.7 依赖库
1、libnl-3.so.200
(1)使用的库版本:libnl-3.5.0.tar.gz
(2)作用:WiFi 相关命令依赖库;
(3)文件系统路径:/lib
2、libnl-genl-3.so.200
(1)使用的库版本:libnl-3.5.0.tar.gz
(2)作用:WiFi 相关命令依赖库;
(3)文件系统路径:/lib
3、libssl.so.1.1
(1)使用的库版本:openssl-1.1.1h.tar.gz
(2)作用:WiFi 相关命令依赖库;
(3)文件系统路径:/lib
4、libcrypto.so.1.1
(1)使用的库版本:openssl-1.1.1h.tar.gz
(2)作用:WiFi 相关命令依赖库;
(3)文件系统路径:/usr/lib
5、补充说明
(1)需要在实际使用命令时,查看缺少的依赖库;
(2)上述 4 个依赖库,是我自己在测试时,发现缺少的;
(3)测试方法:直接运行命令,查看错误提示,根据错误提示添加相应的库文件;
(4)示例代码如下:
[root]#hostapd
hostapd: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
[root]#
4 交叉编译
进行依赖库、命令的交叉编译。
4.1 openssl
1、解压并进入对应路径
# 解压文件
tar -zxvf openssl-1.1.1h.tar.gz# 进入文件路径
cd openssl-1.1.1h/
2、配置环境变量文件
(1)创建并编辑 env_nuc980 文件
vim env_nuc980
(2)填入如下内容
export MACHINE=armv4
export RELEASE=4.4.179
export SYSTEM=linux2
export ARCH=arm
export CROSS_COMPILE="arm-none-linux-gnueabi-" # 指定交叉编译链
export HOSTCC=gcc # 指定gcc
(3)保存退出
(4)使用 source 命令使环境变量生效
source env_nuc980
3、修改相关编译配置选项
./config no-asm no-async shared --prefix=/home/zhaoc/11-Soft/13-NUC980/12-armCompileLib_2/11-install/openssl-1.1.1h_nuc980
(1)相关配置项说明
- no-asm:在交叉编译过程中不使用汇编代码加速编译过程;
- shared:生成动态连接库。
- no-async:交叉编译工具链没有提供 GNU C 的 ucontext 库
- –prefix=:安装路径
(2)安装路径需要修改为自己的安装路径;
4、make 编译;-j6 :使用 6 个逻辑内核同时编译,速度更快;
make -j6
5、安装编译后的文件,到对应路径
make install
4.2 libnl
1、解压并进入对应路径
# 解压文件
tar -zxvf libnl-3.5.0.tar.gz# 进入对应路径
cd libnl-3.5.0/
2、Ubuntu 需安装必备工具,否则会报错
sudo aptitude install bison
sudo aptitude install flex
(1)没有安装对应软件时,报错内容如下
checking for dlfcn.h... (cached) yes
checking for pthread_mutex_lock in -lpthread... yes
checking for strerror_l... no
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
root@qddytt:/opt/IPC3516EV200/libnl-3.5.0#
3、修改相关编译配置选项;注意修改为自己的安装路径
./configure --host=arm-none-linux-gnueabi --prefix=/home/zhaoc/11-Soft/13-NUC980/12-armCompileLib_2/11-install/libnl-3.5.0_nuc980
(1)相关配置项说明
- –host:指定交叉编译链
- –prefix=:安装路径
(2)安装路径需要修改为自己的安装路径;
4、make 编译;-j6 :使用 6 个逻辑内核同时编译,速度更快;
make -j6
5、安装编译后的文件,到对应路径
make install
4.3 iw
1、解压并进入对应路径
# 解压文件
tar -zxvf iw-4.9.tar.gz# 进入对应路径
cd iw-4.9/
2、配置环境变量;对应 libnl 的安装路径下的 lib/
export PKG_CONFIG_PATH=/home/zhaoc/11-Soft/13-NUC980/12-armCompileLib_2/11-install/libnl-3.5.0_nuc980/lib/pkgconfig:$PKG_CONFIG_PATH
3、使用指定交叉编译链编译
make CC=arm-none-linux-gnueabi-gcc
4、编译完成后,可以使用 file
命令,查看下 iw 文件的属性
(1)本次使用 arm-none-linux-gnueabi-gcc
的属性如下
zhaoc@Ubuntu1804:~/11-Soft/13-NUC980/12-armCompileLib_2/12-sourcecode/iw-4.9$ file iw
iw: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /li
(2)之前使用 arm-linux-gcc
时(错误版本),类似文件( wpa_supplicant )属性如下
wpa_supplicant: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=abd215c0dc5a490e088db5fc57f26b1efa8b670e, not stripped
(3)命令属性,必须为 ARM
类型的才可以,否则 不能在板子上正常运行 。
4.4 wpa_supplicant
1、解压并进入对应路径
# 解压文件
tar -zxvf wpa_supplicant_hostapd-0.8_rtw_r24647.20171025.tar.gz# 进入对应路径
cd wpa_supplicant_hostapd-0.8_rtw_r24647.20171025/wpa_supplicant/
2、编辑 Makefile 文件,修改使用的交叉编译链(两处修改),保存退出;
ifndef CC
CC=arm-none-linux-gnueabi-gcc
endififndef CFLAGS
CFLAGS = -MMD -O2 -Wall -g
endifCC=arm-none-linux-gnueabi-gccexport LIBDIR ?= /usr/local/lib/
make 编译;-j6 :使用 6 个逻辑内核同时编译,速度更快;
make -j6
4.5 hostapd
1、解压并进入对应路径
# 解压文件
tar -zxvf hostapd-2.9.tar.gz# 进入对应路径
cd hostapd-2.9/hostapd/
2、使用默认配置文件,创建 config 文件
cp defconfig .config
3、使用 vim 修改 .config ,(取消注释)
#CONFIG_IEEE80211N=y
改为
CONFIG_IEEE80211N=y
否则后续会报错:
~ # hostapd ./hostapd.conf
Configuration file: ./hostapd.conf
Line 7: unknown configuration item 'ieee80211n'
1 errors found in configuration file './hostapd.conf'
Failed to set up interface with ./hostapd.conf
Failed to initialize interface
显示行号路径如下:
156
157 # IEEE 802.11n (High Throughput) support
158 CONFIG_IEEE80211N=y
159
4、备份 Makefile 文件,免得误操作之后还要重新解压一份文件;
cp Makefile Makefile.bak
5、编辑 Makefile 文件,新增如下内容,注意是 新增内容 ;
CC=arm-none-linux-gnueabi-gccCFLAGS += -I /home/zhaoc/11-Soft/13-NUC980/14-armCompileLib_20201201/11-install/libnl-3.5.0_nuc980/include
LIBS += -L /home/zhaoc/11-Soft/13-NUC980/14-armCompileLib_20201201/11-install/libnl-3.5.0_nuc980/libCFLAGS += -I /home/zhaoc/11-Soft/13-NUC980/14-armCompileLib_20201201/11-install/openssl-1.1.1h_nuc980/include
LIBS += -L /home/zhaoc/11-Soft/13-NUC980/14-armCompileLib_20201201/11-install/openssl-1.1.1h_nuc980/lib -lcrypto -lsslLDFLAGS += -lpthread
LDFLAGS += -lm
6、添加环境变量,如下所示;
export PKG_CONFIG_PATH=/home/zhaoc/11-Soft/13-NUC980/14-armCompileLib_20201201/11-install/libnl-3.5.0_nuc980/lib/pkgconfig:$PKG_CONFIG_PATH
7、make 编译;-j6 :使用 6 个逻辑内核同时编译,速度更快;
make -j6
8、编译完成后,就会在当前目录生成所需的 hostapd
,hostapd_cli
文件,不需要 make install
即可;
9、使用 file 命令,查看编译后的文件属性,如果属性为 ARM ,即代表可以在开发板上运行;
zhaoc@Ubuntu1804:~/11-Soft/13-NUC980/13-armCompileLib_20201130/12-sourcecode/hostapd-2.9/hostapd$ file hostapd
hostapd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.16, with debug_info, not stripped
至此,所有使用到的命令均已编译完毕。
5 测试验证
分两步进行,第一步将命令放到文件系统中;第二步测试连接 WiFi 是否正常。
5.1 命令替换
1、替换 wpa_cli wpa_passphrase wpa_supplicant
- 进入对应目录
# 进入对应目录
cd /usr/sbin/
- 查看当前目录文件
# 查看当前目录文件
ls -l
- 删除文件
# 删除文件
rm wpa_cli wpa_passphrase wpa_supplicant
- 拷贝交叉编译好的命令到当前目录(其他方式均可)
# 拷贝交叉编译好的命令到当前目录
lrz
- 赋予可执行权限
# 赋予可执行权限
chmod 777 wpa_cli wpa_passphrase wpa_supplicant
- 直接输入命令,测试是否缺少依赖库
# wpa_supplicant 测试
wpa_supplicant# wpa_passphrase 测试
wpa_passphrase# wpa_cli 测试
wpa_cli
2、替换 iw
- 进入对应目录
# 进入对应目录
cd /sbin/
- 拷贝 iw 到此目录(其他方式均可)
# 拷贝 iw 到此目录
lrz
- 可以看到拷贝进来的文件没有执行权限,修改文件权限
chmod 777 iw
- 直接输入命令,测试是否缺少依赖库
# 输入命令
iw
- 我的开发板提示缺少库文件:
libnl-genl-3.so.200
; - 则去编译好的
libnl
安装路径中拷贝对应库文件进来即可; - 相对路径:
11-install\libnl-3.5.0_nuc980\lib
- 修改新拷贝的库文件权限
chmod 755 libnl-genl-3.so.200
- 接着再次从命令行输入
iw
测试命令,提示缺少库文件:libnl-3.so.200
; - 参考上述方法,拷贝文件到对应路径,同样修改库文件权限为 755 ;
- 再次使用 iw 测试命令,发现没有异常提示,可以正常打印相关配置信息;
- 此时代表命令已可以正常运行;
5.2 连接 WiFi
1、新增连接 WiFi 的配置文件
(1)创建新文件
# 开发板没有 vim
vi r8000.conf
(2)填入如下内容
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={ssid="WIFI名称"psk="WIFI密码明文"
}
2、配置连接 WiFi
# 查看网卡连接状态
wpa_cli -iwlan0 status# 使用配置文件连接 WiFi
wpa_supplicant -iwlan0 -c ./r8000.conf -B# 开启网卡(可选)
ifconfig wlan0 up# 再次查看网卡连接状态
wpa_cli -iwlan0 status# 设置固定 IP 地址,子网掩码
ifconfig wlan0 192.168.60.1 netmask 255.255.255.0# 设置默认网关
route add default gw 192.168.60.254# 修改 DNS ,根据参考资料进行配置;
echo nameserver 223.5.5.5 > /etc/resolv.conf
3、使用 ping 测试 WiFi ,验证是否正常;
ping baidu.com
4、如果可以能 ping 通,则表示命令可以正常运行。
6 总结
本教程为自己在实际使用过程中的经验总结,希望能够帮到您。
好了,本期内容就是这样,祝您一切顺利,我们下期再见!
如果文章内容有误,麻烦评论/私信多多指教!如果觉得文章内容还不错,记得一键四连哦(点赞、收藏、留言、关注),如果您能点个关注,那就是对我最大的鼓励,也将是我创作的动力,谢谢您嘞!
详细记录丨Realtek RTL8188FU WiFi 命令编译相关推荐
- 详细记录丨Realtek RTL8188FU WiFi 连接路由
道阻且长,行则将至.埋头苦干,不鸣则已,一鸣惊人!加油,骚年! Hello 大家好,我是小 2 ,上篇文章我总结了 WiFi 命令编译过程 本篇文章分享一下 WiFi 连接路由的过程,希望对您能有帮助 ...
- 详细记录丨Realtek RTL8188FU WiFi 驱动移植
1 参考资料 1.芯片数据手册:TL8188FCA.pdf 2.驱动移植手册:Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf ...
- 详细记录丨公众号如何通过迁移开通留言功能?
道阻且长,行则将至.埋头苦干,不鸣则已,一鸣惊人!加油,骚年! 1 参考资料 [微信公众号丨i深圳]优化营商环境|个体工商户登记注册可上" i 深圳"掌上办理(https://mp ...
- <Linux开发>--驱动开发-- 字符设备驱动(3) 过程详细记录
<Linux开发>–驱动开发-- 字符设备驱动(3) 过程详细记录 驱动开发是建立再系统之上的,前面作者也记录了系统移植的过程记录,如果有兴趣,可进入博主的主页查看相关文章,这里就不添加链 ...
- 联咏平台(Novatek) | RTL8188FU WIFI驱动移植
目录 1 开发环境 2 内核配置 2.1 配置支持USB设备 2.2 配置支持 wifi 设备 2.3 配置支持 wifi 网络 IEEE 802.11 2.4 编译内核 3 wifi 驱动移植 3. ...
- 实操教程|详细记录solov2的ncnn实现和优化
作者丨欧阳慧宇@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/361900997 编辑丨极市平台 极市导读 由于目前solo系列在GitHub中没有转ncnn的项目, ...
- 最详细的SQL注入相关的命令整理
最详细的SQL注入相关的命令整理 QUOTE: 1. 用^转义字符来写ASP(一句话***)文件的方法: ? http://192.168.1.5/display.asp?keyno=18 ...
- oracle19c的版本号_Windows10安装Oracle19c数据库详细记录(图文详解)
1. 下载资源 官网下载地址: 点此进入 直接点击下载,会自动开始下载. 2. 开始安装 将下载的安装包解压到本地,右键-以管理员身份运行setup.exe,开始安装(一定要以管理员身份运行,不然后面 ...
- android 代码发adb,Android预安装软件adb命令编译源码
Android预安装软件&adb命令&编译源码 发布时间:2020-06-02 17:28:41 来源:51CTO 阅读:895 作者:年少的风 1.预安装软件: 将eclipse下的 ...
最新文章
- 【Raspberry pi】系统安装及基础配置
- LESSON 3 线性回归的手动实现
- 5.7 echo:显示一行文本
- C语言开发笔记(六)实参和形参
- mysql 语句 not_mysql sql语句 is not 用法是
- 抢饭碗?这位 05 后开发三款小程序!
- struts2.0.14 web.xml,struts.xml配置
- html实现自动图片轮播,图片轮播的实现(html__js)
- 如何在上海租房,数据有话说
- Mac系统下Typora配置阿里云图床+上传工具PicGo安装
- java扫雷初级代码_运行在Eclipse环境下的java扫雷游戏的初级代码是什么?
- Eclipse BIRT报表开发工具安装教程
- 燃起图与燃尽图,故事地图和产品线路图分析
- JS实战应用之做LOL领图标任务~
- excel提取html字段文字,excel提取字符串中的特定字符串
- 【用pandas_alive几行代码绘制竞赛动图】10.新南威尔士州 COVID 可视化(测试代码+数据集+绘图参数解析)
- 感应开关垃圾桶小项目的完成及问题解决——基于STC89C52RC单片机
- 施耐德m340设置ip后忘记ip,怎么恢复ip
- Android中识别手柄JAVA_android蓝牙手柄监听 BluetoothGamepad
- 切换Apple Store ID后,Apple Mucic资料库无法加载问题的解决方案