Wireless工具移植之wpa_supplicant

wpa_supplicant 源码包下载地址: http://w1.fi/wpa_supplicant/

1、解压源码包:

tar –xvf wpa_supplicant-2.5.tar.gz

cd wpa_supplicant-2.5/wpa_supplicant

 2、配置交叉编译参数:

cp defconfig .config

修改.config文件第17行,添加你交叉编译得到的Openssl库的路径:

CFLAGS += -I/work/IPCAM_LIB/OpensslLib_HI/include

LIBS += -L/work/IPCAM_LIB/OpensslLib_HI/lib -lssl -lcrypto

 

修改Makefile,指定交叉编译器:

CC=arm-hisiv100nptl-linux-gcc

 

修改目标文件的路径(默认目标文件路径是/usr/local/目录下,但我们交叉编译生成的目标文件最好自己指定一个路径来存放,方便我们打包制作嵌入式文件系统,同时也不会影响PC机的系统):

export LIBDIR =/work/IPCAM_LIB/Wireless/wpa_supplicant/lib/        

export INCDIR =/work/IPCAM_LIB/Wireless/wpa_supplicant/include/    

export BINDIR =/work/IPCAM_LIB/Wireless/wpa_supplicant/sbin/       

 

CFLAGS += -I/work/IPCAM_LIB/OpensslLib_HI/include

LIBS += -L/work/IPCAM_LIB/OpensslLib_HI/lib -lssl -lcrypto          


 3、编译生成目标文件:

make

make install

 

4、 编译过程中遇到的错误及解决办法

 错误1:找不到文件 des.h

../src/crypto/crypto_openssl.c:18:25: 致命错误: openssl/des.h:没有那个文件或目录

编译中断。

make: *** [../src/crypto/crypto_openssl.o] 错误 1

 解决办法

sudo apt-get install libssl-dev

注意:要更新ubuntu的软件源。

 

 错误2: 找不到文件 genl.h

../src/drivers/driver_nl80211.c:17:31: 致命错误: netlink/genl/genl.h:没有那个文件或目录

编译中断。

make: *** [../src/drivers/driver_nl80211.o]错误 1

 

查看.config文件,知道系统中需要安装libnl工具。

 33 #Driver interface for Linux drivers using the nl80211 kernel interface

 34#CONFIG_DRIVER_NL80211=y

 35

 36 #driver_nl80211.c requires libnl. If you are compiling it yourself

 37 #you may need to point hostapd to your version of libnl.

 38 #

 39#CFLAGS += -I$<path to libnl include files>

 40#LIBS += -L$<path to libnl library files>

   解决办法

 sudo apt-get install libnl-dev

  安装libnl-dev后,再次编译就没有上面错误了。

  

错误3

CC  wpa_passphrase.c

/opt/hisi-linux-nptl/arm-hisiv100-linux/bin/../lib/gcc/arm-hisiv100-linux-uclibcgnueabi/4.4.1/../../../../arm-hisiv100-linux-uclibcgnueabi/bin/ld:cannot find -lcrypto

collect2: ld returned 1 exit status

make: *** [wpa_passphrase] 错误 1

 解决办法1

修改.config文件,去掉wpa_passphrase模块。

CONFIG_NO_WPA_PASSPHRASE=y


解决办法2:添加wpa_passphrase编译时链接Openssl库,如下:

LIBS_p += -L /work/IPCAM_LIB/OpensslLib_HI/lib -lssl -lcrypto


 5、 注意:编译过程中可能还会遇到其它一些与Openssl裁剪不当相关的错误,比如:

/work/IPCAM_LIB/OpensslLib_HI/lib/libcrypto.so: warning: gethostbyname is obsolescent, use getnameinfo() instead.
../src/crypto/crypto_openssl.o: In function `md4_vector':
/work/Wireless_Drivers/wpa_supplicant-2.5/wpa_supplicant/../src/crypto/crypto_openssl.c:99: undefined reference to `EVP_md4'
collect2: ld returned 1 exit status
make: *** [wpa_supplicant] 错误 1

这个是因为在编译裁剪openssl时,使用了no-md4选项去年了MD4加密模块,导致wpa_supplicant在链接时找不到MD4的相关定义。重新编译Openssl时开启MD4就可以了。

 

生成的目录文件如下图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值