在Ubuntu下编译wpa_supplicant

最近在研究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

时间: 2024-11-01 21:09:20

在Ubuntu下编译wpa_supplicant的相关文章

gtk+-在ubuntu下编译一个开源软件,./configure时出现错误,求指教

问题描述 在ubuntu下编译一个开源软件,./configure时出现错误,求指教 显示的错误: checking for libgnome-2.0 >= 2.0.0 libgnomeui-2.0 >= 2.0.0 gtk+-2.0 >= 2.4.0 gnome-vfs-2.0 >= 2.6.0 libglade-2.0 >= 2.3.6... Package libgnome-2.0 was not found in the pkg-config search path.

如何在ubuntu下编译linux API文件?

问题描述 如何在ubuntu下编译linux API文件? 一个用到了Linux API的C文件,应该如何在ubunt下编译,我编译时总会出现系统头文件出错的情况或者缺少某个头文件 解决方案 gcc -wall -g xx.c -o xx 找出你调用的api函数x,使用man x,可以查看需要的头文件

如何在ubuntu下编译APK,这个APK的签名为非原生应用的签名?

问题描述 如题,想在ubuntu下编译一个APK,因为这个APK里要用到系统的一些代码,可是我不希望这个APK的签名为系统签名,如何做到?一般情况下编好后都是在out/...system/app下,而且只要你有手机的权限,就可以push apk到手机system/app下.我只是希望能编一个类似第三方的APK,如何做到?求大神解决. 问题补充:MyEyeOfJava 写道 解决方案 做自己的keystore文件,重新对APK进行签名~

Ubuntu下编译飞鸽传书(IPMsg)

飞鸽传书在局域网中是一个非常常用的软件,它只要是文字交流和文件传送(支持文件夹),无需服务器支持,跨平台(Win/Mac/UNIX/Java)且免费开源.在windows下它只有一个可执行文件且有中文版,简单易用.不过在linux下要使用就没那么方便了,需要自己编译,而且编译的时候还错误多多.不过今天总算是勉强的把它编译通过并看起来它是可以正常使用了.1. 首先下载源码包,解压.然后将po/potfiles.in重命名为POTFILES.in(大写字母).因为我编译的时候提示找不到这个文件.2.

openjdk在ubuntu下编译通过后,我该怎么用gdb调试呢 (小的只有5金币 只能悬赏那么多了 )

问题描述 情景是这样的:ubuntu下成功编译openjdk7 接下来 我想先单步调试javac 看看它里边是怎么运行的 等把javac弄清楚了 在去看看jvm内部可是 在用gdb调试javac时 提示错误 我google了一下 原因可能是在编译openjdk时 没有添加调试信息我转去看看的它makefile 期待能在里边加上个gcc -g 这样的段子 可是我发现它的makefile是一层套一层 以小的的功力 基本是看不懂所以 我就想求教大大们 大家编译过openjdk7后 怎么调试它的啊(ub

在Ubuntu下编译FFMPEG

在之前,我们成功地使用mingw+msys在windows平台下编译FFMpeg,并生成了ffplay.exe.现在再在Ubuntu平台上重新编译一次.相对于在windows平台上编译需要的旷日持久而且异常艰难的工作,Ubuntu上编译ffmpeg可谓是非常轻松简单的,几条简单的命令就可以轻松完成. 首先,需要在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 第二部是安装SDL.SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,F

ubuntu 下编译C++代码出现的问题解决_C 语言

同样的代码, 同样的makefile 文件 1)在mac 下顺利编译: 2)在新的ubuntu 下,编译失败: 报错信息: string.h 中各种 函数找不到: makefile: 复制代码 代码如下: //[这是后来添加的 CL_HEADER := -I/usr/include/ CL_LIBS := -L/usr/lib/ //后来添加的] clcp: main.o cl_string_utils.o cl_log.o g++ ${CL_HEADER} ${CL_LIBS}  -o clc

ubuntu下编译linux fetion应用程序安装指南

注:这里给出界面模块的源代码,而libfetion库(32位)则是以静态库的形式放进去了. 1:建立编译环境: 在终端执行以下命令: sudo apt-get install automake sudo apt-get install libc-dev sudo apt-get install g++ sudo apt-get install libcurl4-gnutls-dev sudo apt-get install libqt4-dev qt4-dev-tools 2:下载源代码: 源码

【AllJoyn框架-02】ubuntu下编译测试AllJoyn

所用源码是:alljoyn-14.02-src 进入源码目录,目录结构如下: 直接在终端输入命令:make OS=linux CPU=x86 VARIANT=debug 编译完成就会在顶层目录生成上图的build目录,其目录结构如下: 如果认真阅读make-build_instructions.txt文件就可立刻测试是否编译成功.首先运行alljoyn-daemon,然后先后在不同终端打开chat,此时两个chat就可在alljoyn框架下进行通信了.注意,三个可执行程序都依赖liballjoy