wpa_supplicant 的编译依赖 libnl 库、libssl库,因此需要先编译这两个库。
在编译以下开源库时不同编译工具链编译结果可能存在差异(其他编译器可能存在编译不过的情况)
1 libssl编译
1.1下载
下载链接:https://www.openssl.org/source/
下载文件openssl-1.0.2r.tar.gz
1.2编译
解压文件,进入主目录,使用如下命令编译
a) mkdir _install
b) ./config no-asm shared --prefix=$PWD/_install --cross-compile-prefix=arm-hisiv500-linux-uclibcgnueabi-
_install为相关库的存放路径 arm-himix100-linux- 为交叉编译工具链 注意,在编译过程中,如果出现如下错误: arm-himix100-linux-gcc: error: unrecognized command line option ‘-m64’
则需要打开Makefile 查找里面的 ‘-m64’,并将其删除即可
c) make CC=arm-hisiv500-linux-uclibcgnueabi-gcc
d) make insatll
2 libnl编译
2.1 下载
下载链接:
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html 下载当前最新包libnl-3.5.0.tar.gz
https://www.infradead.org/~tgr/libnl/ (官网)
2.2 编译
解压进入主目录,使用如下命令编译:
a) mkdir _install
b) ./configure CC=arm-hisiv500-linux-uclibcgnueabi-gcc --host=arm-hisiv500-linux-uclibcgnueabi --prefix=$(pwd)/_install/
c) make
d) make install
如果上面的host报错无法识别,就设置成–host=arm
问题分析: 在make时提示error: src/lib/.libs/libnl-cli-3.so: No such file or
directory 是因为./configure CC=arm-hisiv500-linux-uclibcgnueabi-gcc
–host=arm-hisiv500-linux-uclibcgnueabi --prefix=$(pwd)/_install/时—host设置不对,其实在这步就error了
3 wpa_supplicant编译
3.1 下载
下载链接:http://w1.fi/releases/ 下载当前最新包wpa_supplicant-2.9.tar.gz
3.2 编译
解压并进入主目录 使用如下命令编译
a) cd wpa_supplicant/
/*在defconfig中注释掉dbus
#CONFIG_CTRL_IFACE_DBUS_NEW=y
#Add introspection support for new DBus control interface
#CONFIG_CTRL_IFACE_DBUS_INTRO=y
在在Makefile中添加libssl和libnl的路径(请确保路径绝对路径正确),例如:
CFLAGS += -I/home/openssl-1.0.2r/_install/include
LIBS += -L/home/openssl-1.0.2r/_install/lib
CFLAGS += -I/home/libnl-3.5.0/_install/include/libnl3
LIBS += -L/home/libnl-3.5.0/_install/lib
路径根据自己本地实际情况进行更改*/
b) cp defconfig .config
c) make CC=arm-hisiv500-linux-uclibcgnueabi-gcc
本文参考https://blog.csdn.net/u011003120/article/details/90175648 ,区别在于libnl、wpa_supplicant使用版本不同,另增加了部分编译出错的解决方法