wpa_supplicant 的编译

摘要:
1.wpa_supplicant的编译需要用到的3个源码包,分别是wpa_supplicant,openssl,libnlwpa_supplicant的下载地址:http://w1.fi/releases/openssl的下载地址:https://www.openssl.org/solibnl的下载地址:http://www.infradead.org/~tgr/libnl/files/2.x86

1. wpa_supplicant的编译需要用到的3个源码包, 分别是wpa_supplicant, openssl, libnl

wpa_supplicant的下载地址:http://w1.fi/releases/

openssl的下载地址:https://www.openssl.org/so

libnl的下载地址:http://www.infradead.org/~tgr/libnl/files/

2. x86编译

后面编译 wpa_supplicant 2.6时报错,"can't find -lnl",所以编译 libnl-1.1.4。
./configure --prefix=/home/henry/wpa/libnl-1.1.4/out

先装依赖库

sudo apt-get install bison

sudo apt-get install flex

./configure --prefix=/home/henry/wpa/libnl-1.1.4/out

make
make check
make install
// to install the API documentation:
mkdir -vp /home/henry/wpa/libnl-1.1.4/out/libnl/doc
tar -xf ../libnl-doc-1.1.4.tar.gz --strip-components=1 --no-same-owner -C /home/henry/wpa/libnl-1.1.4/out/libnl/doc

openssl的编译:

./config shared --prefix=/home/henry/wpa/openssl-1.1.1/out/ssl/prefix --openssldir=/home/henry/wpa/openssl-1.1.1/out/ssl/configuration
make
make test
make install

wpa_supplicant的编译

cd ~/wpa/wpa_supplicant-2.6/wpa_supplicant
cp defconfig .config
修改配置文件 .config,在"#Uncomment following two linee and fix..."下增加如下语句,用来添加openssl和libnl的头文件和库文件目录,更新编译链接环境变量:
CFLAGS += -I/home/henry/wpa/openssl-1.1.1/out/prefix/include
CFLAGS += -I/home/henry/wpa/libnl-1.1.4/out/include
LIBS += -L/home/henry/wpa/openssl-1.1.1/out/prefix/lib
LIBS += -L/home/henry/wpa/libnl-1.1.4/out/lib

LIBS_p += -L/home/henry/wpa/openssl-1.1.1/out/ssl/prefix/lib (否则找不到libcripto)

执行 make 进行编译,成功后生成三个目标文件 wpa_supplicant, wpa_cli, wpa_passphrase 。

3. armv7交叉编译

3.1 需要下载如下包:

libnl-1.1.4.tar.gz

openssl-1.0.2r.tar.gz

wpa_supplicant-2.6.tar.gz

3.2 设置arm编译工具的PATH

3.3 先装依赖库

sudo apt-get install bison

sudo apt-get install flex

3.4 编译libnl1.1.4

cd lib

rm -f libnl.a =========>作者上传了x86的库,如不删除,编译wpa_supplicant时会报libnl.a的格式错误, 可以用objdump -a libnl.a查看库信息

make mylibs ========>建立prefix 目录

./configure --prefix=/home/cdc/wpa_supplicant/libnl-1.1.4/mylibs CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ AR=arm-linux-gnueabihf-ar LD=arm-linux-gnueabihf-ld -host=arm-linux

make

make install

3.5 编译openssl1.0.2r

mkdir mylibs ========>建立prefix 目录

./config no-asm shared --prefix=/home/cdc/wpa_supplicant/openssl-1.0.2r/mylibs

vi Makefile

PLATFORM=mips-linux-gnu

CONFIGURE_ARGS=mips-linux-gnu ...

CC=$(CROSS_COMPILE)mips-linux-gnu-gcc
CXX=$(CROSS_COMPILE)mips-linux-gnu-g++

CFLAGS=-Wall -g -EL -O3 -fomit-frame-pointer
CXXFLAGS=-Wall -g -EL -O3

MAKEDEPEND=$(CROSS_COMPILE)mips-linux-gnu-gcc

AR=$(CROSS_COMPILE)mips-linux-gnu-ar

RANLIB=$(CROSS_COMPILE)mips-linux-gnu-ranlib

删除 -m32 -m64 选项

3.6 编译及安装

make

make install

3.7 wpa_supplicant编译

cd wpa_supplicant-2.6/wpa_supplicant
cp defconfig .config

vi .config

# Uncomment following two lines and fix the paths if you have installed OpenSSL

# or GnuTLS in non-default location
CFLAGS += -I/home/cdc/wpa_supplicant/inc ==============>把前面编译的libnl, openssl时,在mylibs下生成的include文件夹下所有文件copy到这个目录
LIBS += -L/home/cdc/wpa_supplicant/lib  ===============>把前面编译的libnl, openssl时,在mylibs下生成的lib文件夹下所有文件copy到这个目录

vi Makefile

vi Makefile, --static是为了静态编译,不用动态库
wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
$(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
@$(E) " LD " $@

=============>
wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
$(Q)$(LDO) --static $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) -lm -lpthread
@$(E) " LD " $@

免责声明:文章转载自《wpa_supplicant 的编译》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ajaxfileupload 总结(包括插件处理json格式bug的解决方案)这样配置你的IDEA工作效率提高好几倍!下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux下导入导出MySQL数据库

一、导出:用mysqldump命令行命令格式mysqldump -u 用户名 -p 数据库名 > 数据库名.sql范例:mysqldump -u root -p abc > abc.sql(导出数据库abc到abc.sql文档)提示输入密码时,输入该数据库用户名的密码。 *************************************...

Linux动态频率调节系统CPUFreq之三:governor

在上一篇文章中,介绍了cpufreq的core层,core提供了cpufreq系统的初始化,公共数据结构的建立以及对cpufreq中其它子部件提供注册功能。core的最核心功能是对policy的管理,一个policy通过cpufreq_policy结构中的governor字段,和某个governor相关联,本章的内容正是要对governor进行讨论。 通过...

zabbix 监控linux tcp连接数

            zabbix 监控linux tcp连接数                                      作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.TCP的状态概述 1>.端口状态转换 2>.TCP 三次握手 3>.四次断开 二.zabbix agent端配置监控TCP...

linux c 用户态调试追踪函数调用堆栈以及定位段错误[转载]

一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。 在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 int backtrace(void **buffer,int size) 该...

linux系统编程:获取glibc的版本号

我的环境是ubuntu16.04 glibc官网:http://www.gnu.org/software/libc/libc.html 方法一、一般来说,涉及到库调用的程序,在链接时候都会链接到glibc,所以,可以用ldd命令来查看 ghostwu@ubuntu:~/c_program/linux_unix/chapter4$ ldd ./pwd | g...

LINUX下查找大文件及大的文件夹

原帖地址:https://www.cnblogs.com/iyoume2008/p/6105590.html 今天正好碰到这样的问题,在博客园中看到有以上地址的一篇文章,照着上面的操作解决了问题,但是排版上看着不是特别舒服,自己也想记录下来,就全文COPY了,只是改了下版式。望作者谅解 1如何查找大文件其实很多时候,你需要了解 /u01/app/oracl...