移植参考博客:
https://blog.csdn.net/Lidroid/article/details/46738357
http://www.cnblogs.com/wanhl/p/3374443.html
使用参考博客:
https://www.cnblogs.com/lidabo/p/5062204.html
其他参考博客:
http://www.cnblogs.com/zhangjiankun/p/4888956.html
因参考其他博客时说不同的版本会出现不同的问题,这里使用的版本是:
1、Wpa_Supplicant-0.7.3(一开始使用的是2.0,编译时会出现错误) 源码下载地址:http://hostap.epitest.fi/releases/
2、libnl-3.2.25.tar.gz 源码下载地址:http://www.infradead.org/~tgr/libnl/
3、openssl-1.0.2c 源码下载地址:https://www.openssl.org/source/old/1.0.2/
因之前在上篇文章已经移植libnl,现在把openssl和Wpa_Supplicant移植到linux上,这里可能用到交叉编译的知识,我对交叉编译缺乏理解,在下面略说一下。
一、交叉编译
交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序。具体可以体现在,可以通过pc上的linux进行交叉编译生成linux-arm的可执行代码,达到跨平台编译的效果。
我在移植过程中没有用到交叉编译,而是把压缩包放到主板中,用本地编译工具直接编译的。
主板的编译工具为下图所示:
二、移植openssl
1)解压压缩包
#tar xzf openssl-1.0.2c.tar.gz
2)进入目录中,并执行./condif命令为编译做准备
#cd openssl-1.0.2-stable-SNAP-20150630/
#./config shared no-asm --prefix=/usr/local/openssl/install
说明:
./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,因此-prefix=后面的路径可以根据具体情况修改,–prefix=$PWD表示安装在当前目录,no-asm表示在交叉编译过程中不使用汇编代码代码加速编译过程,shared指生成动态链接库。
3) 修改Makefile,根据编译工具修改
CC= arm-linux-gnueabihf
AR= arm-linux-gnueabihf $(ARFLAGS) r
RANLIB= arm-linux-gnueabihf-ranlib
NM= arm-linux-gnueabihf
MAKEDEPPROG= arm-linux-gnueabihf
4)make
5)make install
成功后会在指定路径中看见以下目录
三、移植wpa_supplicant
(因用wpa_supplicant-2.0时编译时出现/usr/bin/ld: cannot find的错误,改为用Wpa_Supplicant-0.7.3)
1)解压压缩包
#tar xzf wpa_supplicant-0.7.3.tar.gz
2)配置
#cd wpa_supplicant-0.7.3/wpa_supplicant/
#cp defconfig .config
3)修改配置文件
#vim .config
往.config文件中添加如下内容
说明:
CC为所用到的编译工具,CFLAGS指向包含的头文件路径,LIBS指向所需的库
4)编译安装(路径可任意修改)
#make DESTDIR=/usr/local/wpa_s_073/install/ install
成功后在安装路径中的/usr/local/wpa_s_073/install/usr/local/sbin/会看见三个文件wpa_supplicant、wpa_passphrase、wpa_cli
四、使用wpa_supplicant工具
1)把wpa_supplicant和wpa_cli复制到/bin/下。
2)在/var/run/目录下创建wpa_supplicant文件夹
#mkdir /var/run/wpa_supplicant
3)在/etc/下创建文件wpa_supplicant.conf (也可不是/etc/,其他目录亦可),这是启用wpa_supplicant所需要的配置文件,可以通过修改配置文件达到不用输入密码登录的效果
#touch /etc/wpa_supplicant.conf
4)在wpa_supplicant.conf中输入以下内容就可以最简单的使用wpa_supplicant
ctrl_interface=/var/run/wpa_supplicant
update_config=1
update_config=1使能配置更改。
5)启动工具
具体如何使用这里说得很清楚(https://www.cnblogs.com/lidabo/p/5062204.html)
#wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf &
#wpa_cli -i wlan0 add
>1
#wpa_cli -i wlan0 set_network 0 ssid '"206"'
>OK
#wpa_cli -i wlan0 set_network 0 psk'"110110110"'
>OK
更新:解决wpa_supplicant2.0编译时出现cannot find -lnl的问题
1、到http://www.infradead.org/~tgr/libnl/中下载libnl-1.x(这里用的版本是libnl-1.1.4)
2、下载后解压,并把库的路径和头文件路径在wpa_supplicant的.config中设置好,之后编译成功