嵌入式linux下wifi网卡的使用(二)——应用程序iw编译
首先编译iw,
Iw支持两种加密/认证方式。第一种是OPEN/OPEN 第二种是WEP/WEP
在网上下载iw源码,发现iw的编译需要依赖libnl库(这个库是为了方便应用程序使用netlink借口而开发的一个库)什么是netlink:netlink套接字是用以实现用户进程与内核间进行通信的一种特殊的进程间通信,也是网络应用程序与内核通信的最常用的借口
在嵌入式软件开发的过程中,通常需要很多的开源软件的编译及其使用,经过了这个久的开发,现在结合这几个实例谈谈软件编译移植的过程,以及debug的过程
首先查看目录下是否有configure这个文件,可以得知这个目录下有这个文件,有这个文件后,在linux下交叉编译的一个万能方法就是
./configure -–host=arm-linux --prefix=$PWD/tmp
然后进行make,通常开源软件都不会一帆风顺的编译过,十分恶心,只能消停的debug,编译这个libnl出现错误
GEN route/pktloc_syntax.c
make all-am
make[2]: Entering directory `/home/wifi/iw/libnl-3.2.23/lib'
CC addr.lo
addr.c:1027: error: 'AF_RDS' undeclared here (not in a function)
addr.c:1033: error: 'AF_CAN' undeclared here (not in a function)
addr.c:1034: error: 'AF_TIPC' undeclared here (not in a function)
addr.c:1038: error: 'AF_ISDN' undeclared here (not in a function)
addr.c:1039: error: 'AF_PHONET' undeclared here (not in a function)
make[2]: *** [addr.lo] 错误 1
make[2]: Leaving directory `/home/wifi/iw/libnl-3.2.23/lib'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/home/wifi/iw/libnl-3.2.23/lib'
make: *** [all-recursive] 错误 1
可以吧这些错误放在Google搜索下
自己看这些错误应该就是一些宏没有被定义,那就自己定义呗
Vim ./lib/addr.c +1027
在哪里能找到这个宏的定义呢?实际上这些头文件大都来自于内核中,在内核中搜索然后拷贝后发现可以了make
Make install
然后看到当前目录中的tmp目录下已经有编译出来的文件了
etc include lib sbin share
接下来要把include目录中的头文件放在交叉编译链的目录中
cp * -fr /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/
库文件
cp * -rf -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/
动态的库文件也需要拷贝到网络系统的lib目录下
cp *so* -d /home/S5-driver/lesson8/rootfs/lib/
到这里,这个开源的应用库就被我们编译结束了。
解压.tar.gz文件用xzf
解压.tar.bz2用xjf
解压iw进行入目录,没有configure文件,那么只能修改makefile
将makefile中的CC改为arm-linux-gcc
出错:
#如果这个变量被定义了才会定义下面的变量
ifeq ($(NL31FOUND),Y)
CFLAGS += -DCONFIG_LIBNL30
LIBS += -lnl-genl
NLLIBNAME = libnl-3.1
endif
#变量未定义的情况下才会打印这句话,什么时候会被定义,往前看
76:ifeq ($(NLLIBNAME),)
$(error Cannot find development files for any supported version of libnl)
Endif
再往上看下这个宏
其实我们用的libnl的版本是3.11所以只能选择3.x这项,
NL3xFOUND := $(shell $(PKG_CONFIG) --atleast-version=3.2 libnl-3.0 && echo Y)
而这句话对用的shell语言只能在PC机上运行,不能在开发板上运行,所以直接让
NL3xFOUND=y
再进行编译又出现了另外的一些错误
找不到头文件,因为复制的时候
cp * -fr /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/
这个命令应该在./tmp/include/libnl3/目录下执行
更改后继续进行编译
出错
info.c:493: error: implicit declaration of function 'htole16'
再网上找到这个函数自己定义
#define htole16(x) ((((uint16_t)(x))<<8) | (((uint16_t)(x))>>8)) & 0xffff
再执行make,编译成功,成功出现iw这个应用程序。将这个程序复制到根文件系统的bin目录下,这个东西就是个wifi的命令了
嵌入式linux下wifi网卡的使用(二)——应用程序iw编译的更多相关文章
- 嵌入式linux下wifi网卡的使用(四)——应用程序sub_supplicant编译
有readme先看看readme看看有没有编译的方法 里面告诉我们安装时可能会依赖某些库事实证明会依赖openssl库,之前也使用过openssl 这个文件中有个defualtconfig,先用它做. ...
- Linux下双网卡绑定(bonding技术)
Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...
- Linux下修改网卡IP、DNS和网关
Linux下修改网卡IP和网关 建议通过终端字符方式下来修改 一.修改IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOO ...
- kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 【转】
转自:http://blog.chinaunix.net/uid-26349264-id-4455634.html 目录 kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 ...
- Linux下查看网卡驱动和版本信息
Linux下查看网卡驱动和版本信息 查看网卡生产厂商和信号 查看基本信息:lspci 查看详细信息:lspci -vvv # 3个小写的v 查看网卡信息:lspci | grep Ethernet 查 ...
- linux下一个网卡配置多个ip【虚拟ip】
Linux下配置网卡ip别名何谓ip别名?用windows的话说,就是为一个网卡配置多个ip.什么场合增加ip别名能派上用场?布网需要.多ip访问测试.特定软件对多ip的需要...and so on. ...
- linux下Oracle11g RAC搭建(二)
linux下Oracle11g RAC搭建(二) 一.安装前配置 网络的配置 IP占用測试 进入windows下.运行cmd,使用ping命令验证网段是否被占用. 注:用哪个网段都行,一定保证不要被其 ...
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- Linux下多网卡同网段多IP网络分流设定方法
Linux下多网卡同网段多IP网络分流设定方法 -- :: 标签:Linux下多网卡同网段多IP网络分流设定方法 当服务器需要较高的网络流量时,在其它资源不造成瓶颈的情况下无疑会用到多网卡. 第1选项 ...
随机推荐
- java web学习笔记 servlet
关于java web web.xml中一般配置的都是与servlet先关的可以配置servlet filter listener context-param用来配置web应用的启动参数,可用通过Ser ...
- 二叉树的递归遍历 天平UVa839
题意:输入一个树状的天平,利用杠杆原理,根据力矩是否相等(W1D1==W1D2)判断天平是否平衡 解题思路:1.由于判断天平是否平衡,当W1和W2都为0的时候,会先输入左子树,再输入右子树 2.此时的 ...
- 来自Ext的UI边界识别函数constrain
//constrain函数 var min = 1 var max = 3; var num = 4; var result = Math.min(Math.max(num,min),max); co ...
- Android中使用ContentProvider进行跨进程方法调用
原文同一时候发表在我的博客 点我进入还能看到很多其它 需求背景 近期接到这样一个需求,须要和别的 App 进行联动交互,比方下载器 App 和桌面 App 进行联动.桌面的 App 能直接显示下载器 ...
- Zend_Json 简介 --(手冊)
1. 简单介绍 Zend_Json 提供一个方便的方式来串联(native的)PHP(的变量)和JSON,并将JSON(对象)解码到PHP中. 2. 基本使用方法 Zend_Json的使用包含使用 ...
- Ansible@一个高效的配置管理工具--Ansible configure management--翻译(一)
未经书面许可,请勿转载 --- Ansible is the simplest way to automate apps and IT infrastructure 这是Ansible官方站 ...
- .Net 5分钟搞定网页实时监控
一.为什么会用到网页实时监控 LZ最近在无锡买房了,虽然在上海工作,但是上海房价实在太高无法承受,所以选择还可以接受的无锡作为安身之地.买过房的小伙伴可能知道买房的流程,买房中间有一步很重要的就是需要 ...
- Asp.net MVC 生成zip并下载
前面有生成Excel或Word的示例,所以就不再重新写了. 这里只提供将指定文件以ZIP的方式下载. 创建一个 Zip工具类 public class ZIPCompressUtil { public ...
- 接触HTML和CSS心得体会
1.HTML 它负责网页的三个要素之中的结构: HTML使用标签的形式来标识网页中的不同组成部分 <!DOCTYPE html> <html> <head> < ...
- springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用
springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送a ...