wpa_supplicant的移植
Posted lifo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpa_supplicant的移植相关的知识,希望对你有一定的参考价值。
解压,进入,使用默认配置文件
cd wpa_supplicant-2.6
cp defconfig .config
修改.config
文件,修改部分,根据自己的需要进行这部分的配置
#指定libnl的路径和CC
CC=/usr/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc -L/root/openssl-1.1.1d/__install/lib
CFLAGS += -I/root/openssl-1.1.1d/__install/include
LIBS += -L/root/openssl-1.1.1d/__install/lib
CONFIG_DRIVER_NL80211=y
CONFIG_LIBNL32=y
#指定libnl的路径
CFLAGS += -I/root/libnl-3.5.0/__install/include
LIBS += -L/root/libnl-3.5.0/__install/lib
编译make
将生成的文件拷贝到开发吧的bin目录下
编译错误总结
- 在定义CFLAGS或者LDFLAGS的时候,尽量不要指定PC系统的目录,像/usr/lib,/usr/include之类。因为系统一般都是x86的库,如果被交叉编译的库链接的话会报错。
cc1: warning: include location "/usr/local/include/libnl3" is unsafe for cross-compilation [-Wpoison-system-directories]
cc1: warning: include location "/usr/include/dbus-1.0" is unsafe for cross-compilation [-Wpoison-system-directories]
CC ../src/drivers/netlink.c
- -ldbus-1指的是 libdbus.so,也就是说该错误是由于找不到libdbus.so库文件引起的.一般可以检查该库是否安装,以及所在目录的库文件名称与编译器需要的库文件名称是否一致,如果库文件存在,并且名称有差异,比如libdbus.so.20文件,而编译器需要的是libdbus.so.30,那么可以尝试使用
ln -s libdbus.so.20 libdbus.so.30
建议软链接,尝试解决.
/usr/arm/arm-2014.05/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -ldbus-1
collect2: error: ld returned 1 exit status
Makefile:1903: recipe for target 'wpa_supplicant' failed
make: *** [wpa_supplicant] Error 1
显然,找不到头文件造成的错误,有多种解决方法
- 通过make -I/头文件路径,指定头文件搜索路径(可在Makefile中添加,一般通过CFLAGS+=头文件路径的形式来指定,或者在make后面直接使用).
- 使用
gcc --print-search-dirs
可以查看头文件的搜索路径,这里的gcc
需要根据你的gcc
编译器名称调整,通过ln -s
头文件头文件搜索位置建立`通过在头文件的搜索位置,建立一个同名软链接,来帮助编译器找到头文件 - 通过PKG_CONFIG_PATH环境变量,指定文件搜索路径.
- 通过修改源代码文件,如通过错误信息找到
../src/drivers/driver_nl80211.c
,将#include
的路径修改成它可以找到的地方(不推荐).
../src/drivers/driver_nl80211.c:17:31: fatal error: netlink/genl/genl.h: No such file or directory
#include <netlink/genl/genl.h>
^
compilation terminated.
Makefile:1991: recipe for target '../src/drivers/driver_nl80211.o' failed
make: *** [../src/drivers/driver_nl80211.o] Error 1
- make不成功 Make clean一下 在make有可能会成功.
- 多线程make不成功,单线make却可能会成功,不信你试试.
- 有些东西不支持多线程编译,会报错,如果多线编译报错.
以上是关于wpa_supplicant的移植的主要内容,如果未能解决你的问题,请参考以下文章
USB接口WIFI(MT7601芯片)的驱动源码移植过程详解(驱动源码编译wpa_supplicant工具交叉编译文件系统移植)
USB接口WIFI(MT7601芯片)的驱动源码移植过程详解(驱动源码编译wpa_supplicant工具交叉编译文件系统移植)
i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)