日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详细记录丨Realtek RTL8188FU WiFi 命令编译

發(fā)布時間:2024/1/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详细记录丨Realtek RTL8188FU WiFi 命令编译 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

道阻且長,行則將至。埋頭苦干,不鳴則已,一鳴驚人!加油,騷年!

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 無線網(wǎng)卡驅動移植(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模式下出現(xiàn)的問題(https://blog.csdn.net/qq_41877422/article/details/103194360)

3、還有一些其他前輩的教程,十分感謝!

2 環(huán)境介紹

1、Ubuntu18.04 ,不加密環(huán)境,版本信息如下:

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

目前發(fā)現(xiàn) 5.0 及以上版本用 arm-linux-gcc 編譯都會報錯,疑似交叉編譯工具的 gcc 版本太低;

2、iw 命令是 iwconfig 命令的替代者,是 Linux 系統(tǒng)上的一款無線配置工具;

(1)參考資料:https://blog.csdn.net/qq_26602023/article/details/106115823

3、文件系統(tǒng)路徑:/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 狀態(tài);

3、文件系統(tǒng)路徑:/usr/sbin

3.3 wpa_passphrase

1、使用的命令版本:未知;(應該與 wpa_cli 一致,即 v0.8.x_rtw_r24647.20171025 ,使用的同一個源碼包)

2、暫時未用到此命令;

3、文件系統(tǒng)路徑:/usr/sbin

3.4 wpa_supplicant

1、使用的命令版本:wpa_supplicant v2.9

2、命令作用:

(1)用于連接 WPA/WPA2 加密方式的 WiFi ;

(2)非加密方式的 WiFi ,也可使用此命令連接;

3、文件系統(tǒng)路徑:/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、文件系統(tǒng)路徑:/bin

3.6 hostapd_cli

1、使用的命令版本:hostapd_cli v2.9

2、暫未使用;

3、文件系統(tǒng)路徑:/bin

3.7 依賴庫

1、libnl-3.so.200

(1)使用的庫版本:libnl-3.5.0.tar.gz

(2)作用:WiFi 相關命令依賴庫;

(3)文件系統(tǒng)路徑:/lib

2、libnl-genl-3.so.200

(1)使用的庫版本:libnl-3.5.0.tar.gz

(2)作用:WiFi 相關命令依賴庫;

(3)文件系統(tǒng)路徑:/lib

3、libssl.so.1.1

(1)使用的庫版本:openssl-1.1.1h.tar.gz

(2)作用:WiFi 相關命令依賴庫;

(3)文件系統(tǒng)路徑:/lib

4、libcrypto.so.1.1

(1)使用的庫版本:openssl-1.1.1h.tar.gz

(2)作用:WiFi 相關命令依賴庫;

(3)文件系統(tǒng)路徑:/usr/lib

5、補充說明

(1)需要在實際使用命令時,查看缺少的依賴庫;

(2)上述 4 個依賴庫,是我自己在測試時,發(fā)現(xiàn)缺少的;

(3)測試方法:直接運行命令,查看錯誤提示,根據(jù)錯誤提示添加相應的庫文件;

(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、配置環(huán)境變量文件

(1)創(chuàng)建并編輯 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 命令使環(huán)境變量生效

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:生成動態(tài)連接庫。
  • 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、配置環(huán)境變量;對應 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、使用默認配置文件,創(chuàng)建 config 文件

cp defconfig .config

3、使用 vim 修改 .config ,(取消注釋)

#CONFIG_IEEE80211N=y

改為

CONFIG_IEEE80211N=y

否則后續(xù)會報錯:

~ # 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、添加環(huán)境變量,如下所示;

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 ,即代表可以在開發(fā)板上運行;

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 測試驗證

分兩步進行,第一步將命令放到文件系統(tǒng)中;第二步測試連接 WiFi 是否正常。

5.1 命令替換

1、替換 wpa_cli wpa_passphrase wpa_supplicant

  • 進入對應目錄
# 進入對應目錄 cd /usr/sbin/
  • 查看當前目錄文件
# 查看當前目錄文件 ls -l
  • 刪除文件
# 刪除文件 rm wpa_cli wpa_passphrase wpa_supplicant
  • 拷貝交叉編譯好的命令到當前目錄(其他方式均可)
# 拷貝交叉編譯好的命令到當前目錄 lrz
  • 賦予可執(zhí)行權限
# 賦予可執(zhí)行權限 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
  • 可以看到拷貝進來的文件沒有執(zhí)行權限,修改文件權限
chmod 777 iw
  • 直接輸入命令,測試是否缺少依賴庫
# 輸入命令 iw
  • 我的開發(fā)板提示缺少庫文件: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 測試命令,發(fā)現(xiàn)沒有異常提示,可以正常打印相關配置信息;
  • 此時代表命令已可以正常運行;

5.2 連接 WiFi

1、新增連接 WiFi 的配置文件

(1)創(chuàng)建新文件

# 開發(fā)板沒有 vim vi r8000.conf

(2)填入如下內容

ctrl_interface=/var/run/wpa_supplicant ap_scan=1 network={ssid="WIFI名稱"psk="WIFI密碼明文" }

2、配置連接 WiFi

# 查看網(wǎng)卡連接狀態(tài) wpa_cli -iwlan0 status# 使用配置文件連接 WiFi wpa_supplicant -iwlan0 -c ./r8000.conf -B# 開啟網(wǎng)卡(可選) ifconfig wlan0 up# 再次查看網(wǎng)卡連接狀態(tài) wpa_cli -iwlan0 status# 設置固定 IP 地址,子網(wǎng)掩碼 ifconfig wlan0 192.168.60.1 netmask 255.255.255.0# 設置默認網(wǎng)關 route add default gw 192.168.60.254# 修改 DNS ,根據(jù)參考資料進行配置; echo nameserver 223.5.5.5 > /etc/resolv.conf

3、使用 ping 測試 WiFi ,驗證是否正常;

ping baidu.com

4、如果可以能 ping 通,則表示命令可以正常運行。

6 總結

本教程為自己在實際使用過程中的經(jīng)驗總結,希望能夠幫到您。

好了,本期內容就是這樣,祝您一切順利,我們下期再見!

如果文章內容有誤,麻煩評論/私信多多指教!如果覺得文章內容還不錯,記得一鍵四連哦(點贊、收藏、留言、關注),如果您能點個關注,那就是對我最大的鼓勵,也將是我創(chuàng)作的動力,謝謝您嘞!

總結

以上是生活随笔為你收集整理的详细记录丨Realtek RTL8188FU WiFi 命令编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。