详细记录丨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/Linux2、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 Authenticator3、文件系統路徑:/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_nuc9803、修改相關編譯配置選項
./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 -j65、安裝編譯后的文件,到對應路徑
make install4.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 -j65、安裝編譯后的文件,到對應路徑
make install4.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_PATH3、使用指定交叉編譯鏈編譯
make CC=arm-none-linux-gnueabi-gcc4、編譯完成后,可以使用 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 -j64.5 hostapd
1、解壓并進入對應路徑
# 解壓文件 tar -zxvf hostapd-2.9.tar.gz# 進入對應路徑 cd hostapd-2.9/hostapd/2、使用默認配置文件,創建 config 文件
cp defconfig .config3、使用 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 1594、備份 Makefile 文件,免得誤操作之后還要重新解壓一份文件;
cp Makefile Makefile.bak5、編輯 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 += -lm6、添加環境變量,如下所示;
export PKG_CONFIG_PATH=/home/zhaoc/11-Soft/13-NUC980/14-armCompileLib_20201201/11-install/libnl-3.5.0_nuc980/lib/pkgconfig:$PKG_CONFIG_PATH7、make 編譯;-j6 :使用 6 個邏輯內核同時編譯,速度更快;
make -j68、編譯完成后,就會在當前目錄生成所需的 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
- 進入對應目錄
- 查看當前目錄文件
- 刪除文件
- 拷貝交叉編譯好的命令到當前目錄(其他方式均可)
- 賦予可執行權限
- 直接輸入命令,測試是否缺少依賴庫
2、替換 iw
- 進入對應目錄
- 拷貝 iw 到此目錄(其他方式均可)
- 可以看到拷貝進來的文件沒有執行權限,修改文件權限
- 直接輸入命令,測試是否缺少依賴庫
- 我的開發板提示缺少庫文件:libnl-genl-3.so.200 ;
- 則去編譯好的 libnl 安裝路徑中拷貝對應庫文件進來即可;
- 相對路徑:11-install\libnl-3.5.0_nuc980\lib
- 修改新拷貝的庫文件權限
- 接著再次從命令行輸入 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.conf3、使用 ping 測試 WiFi ,驗證是否正常;
ping baidu.com4、如果可以能 ping 通,則表示命令可以正常運行。
6 總結
本教程為自己在實際使用過程中的經驗總結,希望能夠幫到您。
好了,本期內容就是這樣,祝您一切順利,我們下期再見!
如果文章內容有誤,麻煩評論/私信多多指教!如果覺得文章內容還不錯,記得一鍵四連哦(點贊、收藏、留言、關注),如果您能點個關注,那就是對我最大的鼓勵,也將是我創作的動力,謝謝您嘞!
總結
以上是生活随笔為你收集整理的详细记录丨Realtek RTL8188FU WiFi 命令编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSM车位管理系统 毕业设计-附源码65
- 下一篇: svs文件转换为tiff文件