移植参考博客:

  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中设置好,之后编译成功

 posted on 2018-11-15 19:50  拳击手乌小冬  阅读(206)  评论(0编辑  收藏  举报