这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » Wireless工具移植之wpa_supplicant

共2条 1/1 1 跳转至

Wireless工具移植之wpa_supplicant

高工
2018-06-08 12:26:52     打赏

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就可以了。




管理员
2018-06-11 10:03:03     打赏
2楼

谢谢楼主分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]