最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位。

一、编译需要用到三个库源码包,分别是wpa_supplicant, openssl, libnl

1. wpa_supplicant是我们需要编译的源文件包,目前最新版本是1.1。在终端命令行下输入: wget http://hostap.epitest.fi/releases/wpa_supplicant-1.1.tar.gz 进行下载。

2. openssl是ssl协议的开源库,wpa_supplicant文档中声明支持的是0.9.8d版本,在实践中最新的1.0.1c版本也能通过编译。在终端命令行下输入: http://openssl.org/source/openssl-1.0.1c.tar.gz 进行下载。

3. libnl也是需要的,在编译中我首先尝试的是libnl3,在编译过程中发现它的接口和wpa_supplicant调用的已经有了变化,所以改成较早的libnl1.1。同样,在终端命令行下输入:wget http://www.infradead.org/~tgr/libnl/files/libnl-1.1.tar.gz 下载它。

二、下载完成并解压三个库的源代码,下面可以开始编译:

1. 编译libnl.

1.1 tar zxvf libnl-1.1.tar.gz 解压源代码包。进入libnl1.1目录,执行 ./configure 配置编译环境;

1.2 执行make进行编译,这时会报出编译错误:“../include/netlink_local.h:218:error 'ULONG_MAX' undeclared",我们在对应文件添加一个头文件 #include<limits.h>即可解决问题;

1.3 再次编译通过,执行sudo make install,libnl.so会被安装至/usr/local/lib/目录下,相应的头文件也会被copy到/usr/local/include/netlink下。

2. 编译openssl

2.1进入openssl目录,执行make进行编译,完成后执行make install,编译好的openssl库和头文件等被安装在目录/usr/local/ssl下

3. 编译wpa_supplicant

3.1 进入hostapd/wpa_supplicant目录,首先执行cp defconfig .config 拷贝生成编译配置

3.2 修改配置文件 .config,在"#Uncomment following two linee and fix..."下增加如下语句,用来添加openssl和libnl的头文件和库文件目录,更新编译链接环境变量

CFLAGS += -I/usr/local/ssl/include
CFLAGS += -I/usr/local/include/netlink
LIBS += -L/usr/local/ssl/lib
LIBS += -L/usr/local/lib
LIBS_p += -L/usr/local/ssl/lib

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

参考文章:

编译libnl时候的问题 http://www.docin.com/p-352420829.html

Netlink Library - libnl-1.1 移植到ARM Linux http://blog.csdn.net/hinyunsin/article/details/6029403

ubuntu下编译wpa_supplicant http://hi.baidu.com/yyangjjun/item/930f46ab9d21431fa8cfb7ba

wpa_supplicant的移植 http://blog.csdn.net/heshanxingzhe/article/details/6730397

在Ubuntu下编译wpa_supplicant的更多相关文章

  1. linux下编译wpa_supplicant&nbsp;…

    linux下编译wpa_supplicant 收藏 前一段时间只在vs2005下编译成功过.经过近一段时间的琢磨,今天终于在linux下成功编译了wpa_supplicant. 挺简单的事情折腾了这么 ...

  2. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  3. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  4. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  5. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

  6. Ubuntu下编译Bilibili/ijkplayer

    在做Android客户端视频播放器的过程中熟悉ijkplayer.他在视频支持协议上要比Android原生的mediaplayer做的要好.因此,自己也基于Bilibili/ijkplayer的重新编 ...

  7. Ubuntu下编译SHTOOLS

    SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在 ...

  8. 开源播放器 ijkplayer (五) :Linux/Ubuntu 下编译ijkplayer

    一.安装Git与yasm sudo apt-get install git sudo apt-get install yasm 二.下载和配置 SDK.NDK SDK一般开发时肯定都有的,NDK一般是 ...

  9. 在Ubuntu下编译hadoop2.5.x

    在Ubuntu下编译hadoop2.5.x 参考博客:http://www.aboutyun.com/thread-8130-1-1.html 1 下载hadoop源码: (1) http://www ...

随机推荐

  1. autoproxy 规则

    目前在 gfwList 中,有如下的规则格式: example.com 匹配:http://www.example.com/foo匹配:http://www.google.com/search?q=w ...

  2. 一张图让你学会LVM

    导读 随着科技的进步,人们不知不觉的就进入了大数据的时代,数据的不断增加我们发现我们的磁盘越来越不够用了,接下来就是令人头疼的事情--加硬盘,数据的备份与还原.LVM就是Linux下专门针对我们数据的 ...

  3. Notes of Principles of Parallel Programming: Peril-L Notation - TODO

    Content 1 syntax and semantic 2 example set 1 syntax and semantic 1.1 extending C Peril-L notation s ...

  4. localhost 和 127.0.0.1 的区别

    很多人会接触到这个ip地址127.0.0.1.也许你会问127.0.0.1是什么地址?其实127.0.0.1是一个回送地址,指本地机,一般用来测试使用.大家常用来ping 127.0.0.1来看本地i ...

  5. SQL编写

    //用户表,用户ID,用户名称create table t_user (user_id int,username varchar(20));//用户帐户表,用户ID,用户余额(单位分)create t ...

  6. js部分---数组及练习题;

    数据存储--数组: 强类型语言数组 1.同一类型的数据存储的集合,在内存中是连续的 2.定义的时候需要制定长度 弱类型语言数组 1.可以存储任意类型的数据 2.在内存中不连续,不需要制定长度 定义一个 ...

  7. POJ2284 That Nice Euler Circuit (欧拉公式)(计算几何 线段相交问题)

                                                          That Nice Euler Circuit Time Limit: 3000MS   M ...

  8. poj2553 强连通

    题意:定义了一个图的底(bottom),是指在一个图中能够被所有点到达的点,问途中有哪些点是图的底. 首先是同一个强连通分量中的点都能够互相到达,强连通分量中一个点能到达其他点,也必然代表该强连通分量 ...

  9. (转) 技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道

    技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道 原创 2016-09-21 钟巧勇 深度学习大讲堂 点击上方“深度学习大讲堂”可订阅哦!深度学习大讲堂是高质量原创内容平台,邀请 ...

  10. read the python code and predict the results --- from <Learn Python The Hard Way>

    import random from urllib import urlopen import sys WORD_URL = "http://learncodethehardway.org/ ...