wpa-supplicant移植

Posted 浩瀚之水_csdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpa-supplicant移植相关的知识,希望对你有一定的参考价值。

一、libnl-3.2.25 交叉编译
libnl-3.2.25 下载地址:

http://www.infradead.org/~tgr/libnl/

创建安装目录:

libnl-3.2.25$ mkdir __install

编译脚本build.sh:

libnl-3.2.25$ cat build.sh 
./configure CC=arm-linux-gnueabihf-gcc \\
    --prefix=$(pwd)/__install \\
    --host=arm-linux-gnueabihf \\
    CFLAGS=-I/usr/include/libnl3
    
make && make install

二、openssl-1.0.2r交叉编译
openssl source code 下载:

https://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2r.tar.gz

创建安装目录:

openssl-1.0.2r$ mkdir __install

生成Makefile:

./config no-asm shared --prefix=$(pwd)/__install

编辑Makefile:

CROSS_COMPILE= arm-linux-gnueabihf-
CC= $(CROSS_COMPILE)gcc
CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -    O3 -Wall
DEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNB    OUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TR    ACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERS
PEX_LIBS=
EX_LIBS= -ldl
EXE_EXT=
ARFLAGS=
AR= $(CROSS_COMPILE)ar $(ARFLAGS) r
RANLIB= $(CROSS_COMPILE)ranlib
RC= $(CROSS_COMPILE)windres
NM= $(CROSS_COMPILE)nm
PERL= /usr/bin/perl
TAR= tar
TARFLAGS= --no-recursion
MAKEDEPPROG=makedepend
LIBDIR=lib
SHARED_LDFLAGS=



NOTE:去掉CFLAG参数中的 -m64 ,SHARED_LDFLAGS参数中的 -m64

编译安装:

make && make install 

三、交叉编译wpa_supplicant

源码下载:http://w1.fi/wpa_supplicant/

下载最新版本:http://w1.fi/releases/wpa_supplicant-2.9.tar.gz

1)创建一个.config文件

cd /root/wifi/
tar -xvf wpa_supplicant-2.9.tar.gz
cd wpa_supplicant-2.9/wpa_supplicant
cp defconfig .config

2) 修改.config文件

修改如下部分:

# Additional directories for cross-compilation on Linux host for mingw target
#CFLAGS += -I/opt/mingw/mingw32/include/ddk
#LIBS += -L/opt/mingw/mingw32/lib
#CC=mingw32-gcc

 # Additional directories for cross-compilation on Linux host for mingw target
 CFLAGS += -I/root/wifi/openssl-OpenSSL_1_1_1b/build/include
 LIBS += -L/root/wifi/openssl-OpenSSL_1_1_1b/build/lib
 CFLAGS += -I/root/wifi/libnl-3.2.23/build/include
 LIBS += -L/root/wifi/libnl-3.2.23/build/lib
 CC=arm-linux-gcc

CFLAGS为编译安装好的openssl的include目录 和 libnl的include目录
LIBS为编译安装好的openssl的lib目录 和 libnl的include目录
CC为交叉编译工具

3)添加环境变量

export PKG_CONFIG_PATH=/root/wifi/libnl-3.2.23/build/lib/pkgconfig:$PKG_CONFIG_PATH

4)编译

执行make后会出现以下错误:

dbus/dbus_dict_helpers.c:10:23: warning: dbus/dbus.h: No such file or directory
In file included from dbus/dbus_dict_helpers.c:14:

修改.config文件,注释掉以下两个选项:

#CONFIG_CTRL_IFACE_DBUS_NEW=y
#CONFIG_CTRL_IFACE_DBUS_INTRO=y


四:netlink/genl/genl.h: 没有此类文件或者目录

我正在交叉编译hostapd的openwrt 。 我正在 fatal error: netlink/genl/genl.h: No such file or directory 我已经安装了 libnl-3.2.24. 如果我直接编译( 不交叉编译),那么hostapd就会正确编译而没有任何错误。

回答 1:
你可以使用以下命令搜索正确的软件包:

apt-file search /netlink/genl/genl.h
在我的示例中,输出为:

libnl-3-dev:/usr/include/libnl3/netlink/genl/genl. h

这意味着,我必须安装软件包 libnl-3-dev:

sudo apt-get install libnl-3-dev
你需要 libnl-genl-3-dev

sudo apt-get install libnl-genl-3-dev
然后打开 config file:

nano hostap/hostapd/.config
取消注释该行:

CONFIG_LIBNL32=y
再次启动 make

回答 2:
头文件 …/netlink/genl/genl.h 在 libnl-3-dev 包中找到

使用以下方法安装:

sudo apt-get install libnl-3-dev
 

以上是关于wpa-supplicant移植的主要内容,如果未能解决你的问题,请参考以下文章

text Raspberry Pi 3 wpa-supplicant文件

Android 5.1系统源码Wifi模块中wifiSettings源码分析

安卓rom移植到底是啥意思?

第三方驱动移植 —— 黑盒移植

Linux系统移植:NXP 官板 uboot 移植

Linux系统移植:原厂 Kernel 移植到开发板