wpa_supplicant工具移植

一、移植準備

就移植來說,wpa_supplicant的移植和ssh十分類似,wpa_supplicant需要openssl和libnl庫,所以我們需要先準備好openssl和libnl庫,openssl的移植在前面的文章嵌入式Linux開發板移植SSH中也介紹過一次,這裏的openssl庫的移植和前面完全一樣。我們先準備好源碼:

  1. openssl-1.0.2.tar.gz
  2. libnl-3.2.23.tar.gz
  3. wpa_supplicant-2.9.tar.gz

二、openssl移植

將openssl的源碼拷貝至Linux主機並解壓,然後新建一個目錄openssl用於存放編譯結果。

1.配置(我這裏是1.0.2版本,新版的配置方法有所不同)
./Configure --prefix=/ZLG_linux/wpa_tools/openssl os/compiler:/ZLG_linux/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-gcc 

–prefix 指定make install的安裝目錄,這裏選擇剛剛創建的openssl目錄
os/compiler 指定交叉編譯器,這裏最好使用絕對路徑

2.編譯
make //這裏儘量不要使用多核編譯,可能會出錯
3.安裝
make install

安裝完成後,openssl目錄下就生成了我們需要的文件。

三、libnl移植

將libnl源碼拷貝至Linux主機下並解壓,同時新建一個libnl目錄用於存放編譯結果

1.配置
./configure --host=arm-fsl-linux-gnueabi --prefix=/ZLG_linux/wpa_tools/libnl/

–prefix 指定make install的安裝目錄,這裏選擇剛剛創建的openssl目錄
–host 指定交叉編譯器的前綴,注意是前綴!!!沒有"-"

2.編譯、安裝
make
make install

完成之後,libnl目錄下就會生成我們需要的庫文件。

四、wpa_supplicant 移植

將wpa_supplicant源碼拷貝到linux主機並解壓,然後進入wpa_supplicant目錄下:

1.配置

將wpa_supplicant目錄下的defconfig拷貝一份並重命名爲.config,然後打開.config文件

cp defconfig .config
vim .config

在.config文件中增加如下內容,其中openssl和libnl庫的路徑就是剛剛openssl和libnl安裝的位置

#交叉編譯器
CC=arm-fsl-linux-gnueabi-gcc
#openssl 庫和頭文件路徑
CFLAGS += -I/ZLG_linux/wpa_tools/openssl/include
LIBS += -L/ZLG_linux/wpa_tools/openssl/lib
#libnl 庫和頭文件路徑
CFLAGS += -I/ZLG_linux/wpa_tools/libnl/include/libnl3
LIBS += -L/ZLG_linux/wpa_tools/libnl/lib

接着還需要指定 libnl 庫的 pkgconfig 路徑,環境變量 PKG_CONFIG_PATH 保存着 pkgconfig 包路徑。

export PKG_CONFIG_PATH=/ZLG_linux/wpa_tools/libnl/lib/pkgconfig:$PKG_CONFIG_PATH 
2.編譯
make

編譯結束後會在當前目錄下生成wpa_supplicantwpa_cli兩個工具。
將這兩個文件拷貝到開發板/usr/bin目錄下。

3.開發板配置

首先,在開發板/etc目錄下新建一個wpa_supplicant.conf文件,文件內容如下:

ctrl_interface=/var/run/wpa_supplicant
# Open system without encryption
network={
    ssid="wifi名字"
    key_mgmt="wifi密碼"
}

接着需要新建/var/run/wpa_supplicant目錄

mkdir -p /var/run/wpa_supplicant 

最後使用下面的命令連接wifi

wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &

在這裏插入圖片描述
這樣就是連接成功,再動態獲取下ip即可

udhcpc -i wlan0 //-i指定網卡

在這裏插入圖片描述
接着執行ifconfig就可以看到已經分配ip地址的無線網卡了
在這裏插入圖片描述
最後,ping一下百度試試

ping -I 192.168.43.198 www.baidu.com  //-I是指定執行 ping 操作的網卡 IP 地址

在這裏插入圖片描述
成功ping通百度,接下來就可以利用wifi上網了!
若這裏ping不通百度,請確保/etc目錄下有resolv.conf文件(DNS客戶機配置文件,用於設置DNS服務器的IP地址及DNS域名)

參考博客/文章:

  1. 【正點原子】I.MX6U嵌入式Linux驅動開發指南V1.0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章