嵌入式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选项 ...
随机推荐
- object 覆盖 div 在IE 和Firefox 的解决方案
问题描述 公司产品需要在三维(3D)控件上显示弹框,按钮等,然而三维控件的object覆盖了div,弹框和按钮不能显示 firefox 解决方案 最外层div的背景使用不透明背景色,必须是不透明的哦 ...
- 10.0.0.55训练赛 Writeup
From LB@10.0.0.55 Misc 0x01 misc100(图片隐写) 首先用binwalk扫了一下,发现没毛病. 然后就搜了一下jpg的文件尾FFD9,如下图,看到了png格式的标志IH ...
- 【swift-总结】函数
swift的函数在swift2中的使用改变了不少 /** *param: personName 參数 *returns: String为返回值 */ func sayHello(personName: ...
- poj 2570 Fiber Network(floyd)
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...
- Oracle学习笔记(7)——高级查询(1)
在学习高级查询之前,我们先了解一下怎样查看Oracle数据库中的全部表.由于我们要使用到Oracle数据库中SCOTT用户下的几张表(这些表是Oracle数据库自带的表). 分组查询 分组函数的概念: ...
- XML文档读取-DOM
DOM(Document Object Model),“文档对象模型”早期是为了解决不用浏览器间数据兼容问题提出的解决方案,现在已经是W3C组织推荐的处理可扩展标志语言的标准编程接口. W3C DOM ...
- XMind常用快捷方式汇总
快捷键(Windows) 快捷键(Mac) 描述 Ctrl+N Command+N 建立新工作簿 Ctrl+O Command+O 开启工作簿 Ctrl+S Command+S 储存目前工作簿 Ctr ...
- anaconda不能安装python的包问题
在点了n次,重启应用多次之后,安装包(apply)之后还是没有反应,依然心平气和的我突然想到用管理员模式打开,结果就可以愉快的装包了,估计创建新的环境也是要管理员打开的.
- linux启动失败
如图 1.开机界面 按 e 键 2.选择第二个进入就好了 根据网上说的修改kernel 配置 加上 enforcing=0 无效 1.进入界面后再按 e 键 3.选择第二个按e键进入编辑 界面 每次 ...
- 小白的Python之路 day2 文件操作
文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...