嵌入式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选项 ...
随机推荐
- 》》jquery-weui 初
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...
- Windows和Linux环境下搭建SVN服务器
--------------------------Windows下搭建SVN服务器----------------------------- 一.安装SVN服务端 软件包Setup-Subversi ...
- 湘潭大学1185 Bob's Problem
Bob's Problem Accepted : 114 Submit : 589 Time Limit : 1000 MS Memory Limit : 65536 KB 题目描写叙述 Bo ...
- cocos2d-x3.6 连连看完整源代码
我的博客:http://blog.csdn.net/dawn_moon 好了,这个连连看是用最新版cocos2d-x 3.6版写的,里面使用了非常多新特性. 基本完工了.另一个积分和关卡没有做.有兴趣 ...
- centos yum安装ffmpeg
ffmpeg是一个重要的应用软件,用于执行与视频文件转换成不同的视频流格式的视频站点,能够安装在linux系统上来使用 (一)安装编译环境 #yum install -y automake auto ...
- JVM垃圾收集相关经常使用參数
參 数 描 述 UseSerialGC 虚拟机执行在Client 模式下的默认值,打开此开关后,使用Serial + Serial Old 的收集器组合进行内存回收 UseParNewGC 打开此开关 ...
- JAVA入门[21]-Jedis操作redis示例
本节目标 通过JedisPool获取Jedis示例,并完成对redis 简单的Key-value读写操作. 完整代码结构如下: redis服务端 在本地运行redis-server.exe,然后在re ...
- 利用 Docker 备份、迁移数据库
原文地址:https://zeeko.1503.run/Article/17 最近在把腾讯云的国内主机迁移到香港主机,因为之前使用的 MySql 跟 MongoDb 都是基于 Docker 部署的,所 ...
- Docker for Windows 使用入门
欢迎来到Docker for Windows! Docker是用于创建Docker应用程序的完整开发平台,Docker for Windows是在Windows系统上开始使用Docker的最佳方式. ...
- 【quickhybrid】H5和原生的职责划分
前言 在JSBridge实现后,前端网页与原生的交互已经通了,接下来就要开始规划API,明确需要提供哪一些功能来供前端调用. 但是在这之前,还有一点重要工作需要做: 明确H5与Native的职责划分, ...