Linux 驱动开发:USB无线wifi驱动开发(MT7601)、完成WIFI管理工具安装

开发环境说明内核版本:3.5.0
交叉编译器:arm-linux-gcc-4.5.1
pc 宿主机:红帽 redhat
一、移植 wifi 驱动当前采用的wifi是360随身wifi,这款随身wifi所用的网卡芯片是 ralink(雷凌科技) 的解决方案(在之前文章里也有详细介绍),芯片型号为 mt7601。 如果在pc计算机上使用这款随身wifi那自然是简单,官网下载个驱动安装插上就能使用。 如果是在嵌入式平台,自动的平台上使用,官网就没有现成的驱动下载了,这种情况下就需要针对wifi编写驱动。当然,从0开始写确实困难,不过这款芯片官方提供了linux下的驱动源码,这就好办了。只需要下载下来,编译就能使用了。
接下来这篇文章会详细介绍wifi驱动从哪里下载,下载下来如何修改进行编译安装测试,并交叉编译对应的wifi工具,最终完成wifi的基本使用,完成ip地址动态分配,热点连接,热点扫描、热点信息查看等等。
1.1 下载 wifi 驱动下载链接:http://mediatek.com/zh-cn/downloads1/downloads/[](http://mediatek.com/zh-cn/downloads1/downloads/)
直接下载链接
http://s3.amazonaws.com/mtk.cfs/downloads/linux/dpo_mt7601u_linuxsta_3.0.0.4_20130913.tar.bz2[](http://s3.amazonaws.com/mtk.cfs/downloads/linux/dpo_mt7601u_linuxsta_3.0.0.4_20130913.tar.bz2)
1.2配置编译驱动将下载的驱动压缩包拷贝到虚拟机,解压。(为了好分类,最好单独创建一个文件夹存放)
1.2.1 解压[root@xiaolong 360_wifi]# tar xvf dpo_mt7601u_linuxsta_3.0.0.4_20130913.tar.bz2
1.2.2 修改运行环境进入到解压的目录下,修改顶层 makefile,驱动默认的运行环境为 x86,需要注释掉。
[root@xiaolong dpo_mt7601u_linuxsta_3.0.0.4_20130913]# gedit makefile +30第 30 行加上注释:#platform = pc 第 49 行取消注释:latform = smdk
1.2.3 修改编译环境[root@xiaolong dpo_mt7601u_linuxsta_3.0.0.4_20130913]# gedit makefile +275ifeq ($(platform),smdk)linux_src = /work/linux3.5/linux-3.5 内核路径 cross_compile = arm-linux- 交叉编译器 endif
1.2.4 查看 usb 的 idusb 芯片的 id,需要用作匹配作用!相当于平台设备的驱动端与设备端一样,插入了 usb 之后,usb 控制器需要对插入的 usb 进行访问,确认是否是 wifi 芯片。确定的凭证就是 id 号
查看 usb id 的方法:
在虚拟机环境下,输入 lsusb 先查看已经存在的 usb 设备:
查看之后,再插入 360wifi,再次输入 lsusb 查看存在的 usb 设备。
注意: 默认 360wifi 会被 windows 挂载,需要手动点击虚拟机右下脚的 usb 图标将 360wifi 挂载进来。
挂载进来之后,查看的结果:
由上面可以看出,360wifi 的设备 id 分别是:148f 和 760b。
1.2.5 添加 usb id添加 usb 的 id 需要修改 common 目录下的 rtusb_dev_id.c 文件,该文件里有一个存放 id 的结构体,我们需要将上一步得到的 360wifi 的 id 添加到结构体中。
[root@xiaolong dpo_mt7601u_linuxsta_3.0.0.4_20130913]# cd common/[root@xiaolong common]# gedit rtusb_dev_id.c +37添加的格式:
{usb_device(0x148f,0x760b)}, //添加 360wifi 的设备 id
1.2.6 去除调试信息为什么去除调试信息呢?因为在终端调试代码的时候,驱动会不断的向终端打印信息,导致没法敲打命令,所以需要将其注释掉。去除调试信息需要进入到 include/os/目录下,修改 rt_linux.h 文件的 1558 行。
[root@xiaolong dpo_mt7601u_linuxsta_3.0.0.4_20130913]# cd include/os/[root@xiaolong os]# gedit rt_linux.h +1558#include os/rt_os.h#undef dbgprint //添加这两句话 去除调试打印输出#define dbgprint(...)#endif /* __rt_linux_h__ */
1.2.7 编译源码修改完之后,编译源码,生成驱动文件。 (需要在解压的顶层目录下输入 make) 编译成功后,会在 os/linux/目录下生成 mt7601usta.ko 文件。
1.2.8 修改 u-boot 启动代码启动 u-bootd 的时候先进入 u-boot 命令行,设置 uboot 环境变量,在之前的环境变量后加一句 coherent_pool=2m。
coherent_pool=2m 表示设置 dma 的缓冲区大小。如果不设置 dma 缓冲区大小,装载 360wifi 驱动的时候会报错。
设置uboot环境变量代码如下:(注意:下边代码是一行,不能有换行符出现)
set bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/nfs_root ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off console=ttysac0,115200 lcd=s70 coherent_pool=2m init=/linuxrc
1.2.9 测试 wifi 驱动将生成的 mt7601usta.ko 驱动文件拷贝到开发板目录下,安装。安装成功之后,将 360wifi 插入到开发板的 usb 口中,观察弹出的测试信息。
[root@xiaolong /360_wifi]# insmod mt7601usta.ko
如果识别成功,会出现以下的提示信息:
1.3.0 拷贝 wifi 启动配置文件将 rt2870sta.dat 拷贝至开发板 /etc/wireless/rt2870sta/目录下。
(没有目录就创建一个); mkdir /etc/wireless/rt2870sta
二、移植 wifi 配置工具2.1 移植wireless_toolswireless tools for linux是一个linux命令行工具包,用来设置支持linux wireless extension的无线设备。wireless tools for linux 和 linux wireless extension 由 jean tourrilhes在维护,由hewlett-packard(hp惠普)赞助。
大多数基于linux内核的操作系统都包含wireless tools。在许多gnu/linux 发行版中,都缺省安装这个工具包,即使是没有自动安装,也能很容易地找到其二进制代码安装包。
wireless extension (we)是一组通用的api,能在用户空间对通用wireless lans进行配置和统计。它的好处在于仅通过一组单一的工具就能对各种各样的wireless lans进行管理,不过它们是什么类型,只要其驱动支持wireless extension就行;另一个好处就是不用重启驱动或linux就能改变这些参数。
wireless tools (wt)就是用来操作wireless extensions的工具集,它们使用字符界面,虽然粗糙,但支持所有wireless extension。虽然还有很多其他管理wireless extensions的工具,但wireless tools是参考实现,它包括以下工具:
iwconfig:设置基本无线参数
iwlist:扫描、列出频率,比特率,密钥等
iwspy:获取每个节点链接的质量(只能查阅与之相连的节点)
iwpriv:操作wireless extensions 特定驱动
ifrename: 基于各种静态标准命名接口
大多数 linux 发行版本都在其网络初始化脚本中集成wireless extension,以便启动时配置无线接口。他们还将wireless tools作为其标准封装包。
2.1.1 下载地址下载地址:
http://www.labs.hpe.com/personal/jean_tourrilhes/linux/wireless_tools.29.tar.gz[](http://www.labs.hpe.com/personal/jean_tourrilhes/linux/wireless_tools.29.tar.gz)
2.1.2 解压配置(1)解压
[root@xiaolong 360wifi]# tar xvf wireless_tools.29.tar.gz[root@xiaolong 360wifi]# cd wireless_tools.29(2)修改 makefile
[root@xiaolong wireless_tools.29]# gedit makefile 大约 12 行和 14 行12 cc = arm-linux-gcc14​ r = arm-linux-ar(3)​ 编译
[root@xiaolong wireless_tools.29]# make(4) 拷贝文件
拷贝 libiw.so.29 文件到目标系统 rootfs/usr/lib/目录拷贝用到的几个程序到目标板 rootfs/usr/lib/bin/目录iwpriv、iwconfig、iwlist, iwevent, iwspy至此 wireless_tools 移植完成有可能出现的错误:在到产品板上还可能出现 can't resolve symbol '__ctype_b_loc' 错误去掉 iwlib.h 中这一行重新编译即可#include 2.1.3 工具使用方法1. 启动网卡:ifconfig ra0 up2. 关闭网卡:ifconfig ra0 down3. 扫描周围的 wifi 信息:iwlist ra0 scan4. 查看无线网卡的信息(比如:网卡名称,已经连接上的 wifi 等):iwconfig5. 我们经常会用到的主要是 iwlist、iwconfig、 iwpriv(没有全部测试过)命令行:(连接不需要验证密码的热点)iwlist mlan0 scan //搜索热点信息ap iwconfig mlan0 essid “linksys” //连接热点udhcpc -i mlan0 //获得动态 ip命令行:(连接需要验证密码的热点)iwlist mlan0 scan //搜索热点信息ap iwconfig mlan0 key xxxxxxxxxx //输入验证密码iwconfig mlan0 key open //密码验证功能打开iwconfig mlan0 essid “linksys” //连接热点udhcpc –i mlan0 //获得动态 ip3.1 移植 wap_supplicant 工具目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。
wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得它所支持的驱动列表。另外,wpa_supplicant目前只能连接到那些你已经配置好essid的无线网络,它可以让您连接到那些使用wpa的ap。wireless-tools支持几乎所有的无线网卡和驱动,但它不能连接到那些只支持wpa的ap。
关于wpa:
wpa是wifi protected access的缩写,中文含义为“wifi网络安全存取”。wpa是一种基于标准的可互操作的wlan安全性增强解决方案,可大大增强现有以及未来无线局域网络的数据保护和访问控制水平。
wpa_supplicant是一个开源项目,已经被移植到linux,windows以及很多嵌入式系统上。它是wpa的应用层认证客户端,负责完成认证相关的登录、加密等工作。
wpa_supplicant是一个 独立运行的 守护进程,其核心是一个消息循环,在消息循环中处理wpa状态机、控制命令、驱动事件、配置信息等。
经过编译后的 wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant 和 wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关:
后台运行wpa_supplicant,使用 wpa_cli来搜索、设置、和连接网络。
3.1.1 wap_supplicant 简介在 linux 移植 iw 工具的时候,我们讲过 iw 支持两种“认证/加密”的方式,这两种方式分别为:open 与 wep。但是现在很多的无线加密方法都是以 wpa 与 wpa2(aes)方式加密的。那么这里就出现了 iw 工具不能再 wpa 与 wpa2 的无线加密上使用。因此接下来移植一个 wpa_supplicant 的工具:这个工具支持上面介绍到的四种方式:
1​ open2​ wep3​ wpa(tkjp)4​ wap2(aes)3.1.2 移植 libopenssl 库openssl 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及ssl协议,并提供丰富的应用程序供测试或其它目的使用。
openssl被曝出现严重安全漏洞后,发现多数通过ssl协议加密的网站使用名为openssl的开源软件包。openssl漏洞不仅影响以https开头的网站,黑客还可利用此漏洞直接对个人电脑发起“心脏出血”(heartbleed)攻击。据分析,windows上有大量软件使用了存在漏洞的openssl代码库,可能被黑客攻击抓取用户电脑上的内存数据。
下载链接:http://distfiles.macports.org/openssl/[](http://distfiles.macports.org/openssl/)
1.​ 将下载的 openssl-1.0.2e.tar.gz 压缩包拷贝至虚拟机解压。[root@xiaolong 360_wifi]# tar xvf openssl-1.0.2e.tar.gz2.​ 配置编译安装的路径[root@xiaolong openssl-1.0.2e]# ./config shared no-asm --prefix=$pwd/tmp--prefix=$pwd/tmp 表示编译安装的路径为当前目录下的 tmp3.​ 修改顶层 makefile[root@xiaolong openssl-1.0.2e]# gedit makefile +6262 cc= arm-linux-gccar= arm-linux-ar $(arflags) rranlib= arm-linux-ranlibnm= arm-linux-nm75​ akedepprog= arm-linux-gcc
4.​ 编译[root@xiaolong openssl-1.0.2e]# make
5.​ 安装[root@xiaolong openssl-1.0.2e]# make destdir=$pwd/tmp install3.1.3 拷贝生成的文件(1)将安装目录下(tmp/include)的头文件拷贝到交叉编译器的 include 目录下
[root@xiaolong openssl-1.0.2e]# cp tmp/include/* /work/arm-linux-gcc/opt/friendlyarm/toolschain/4.5.1/arm-none-linux-gnueabi/include/ -rf(2) 将编译生成 lib 库拷贝一份到开发板根文件系统 lib 目录下
[root@xiaolong tmp]# pwd/work/360_wifi/openssl-1.0.2e/tmp[root@xiaolong tmp]# ls bin include lib openssl-1.0.2e.tmp.tar ssl[root@xiaolong tmp]# cp lib/* /work/nfs_root/lib/ -rf -d(3) 将编译生成的 lib 库拷贝到交叉编译器的 lib 目录下
[root@xiaolong openssl-1.0.2e]#cp tmp/lib/* /work/arm-linux-gcc/opt/friendlyarm/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ -rf -d3.1.4 移植 wpa_supplicant : 可用于上述 4 种认证/加密的库下载链接:http://w1.fi/wpa_supplicant/[](http://w1.fi/wpa_supplicant/)
(1)将下载好的压缩包拷贝至虚拟机解压
[root@xiaolong 360_wifi]# tar xvf wpa_supplicant-2.5.tar.gz(2) 加载配置文件
[root@xiaolong wpa_supplicant-2.5]# cd wpa_supplicant/[root@xiaolong wpa_supplicant]# cp defconfig .config(3)修改配置文件
[root@xiaolong wpa_supplicant]# gedit .config增加以下代码:cc=arm-linux-gcccflags += -i/work/360_wifi/openssl-1.0.2e/tmp/includelibs +=-l/work/360_wifi/openssl-1.0.2e/tmp/libcflags += -i /work/360_wifi/libnl-3.2.25/tmp/include/libnl3libs += -l /work/360_wifi/libnl-3.2.25/tmp/libconfig_libnl32=y
(4)编译
[root@xiaolong wpa_supplicant]# make
(5)安装
[root@xiaolong wpa_supplicant]#make destdir=$pwd/tmp install(6)拷贝生成的可执行文件到开发板的 sbin 目录下--路径 /tmp/usr/local/sbin
[root@xiaolong sbin]# pwd/work/360_wifi/wpa_supplicant-2.5/wpa_supplicant/tmp/usr/local/sbin[root@xiaolong sbin]# cp ./* /work/nfs_root/sbin/(7)​ 拷贝生成的可执行文件到开发板的 bin 目录下
[root@xiaolong sbin]# ls wpa_cli wpa_passphrase wpa_supplicant[root@xiaolong sbin]# cp ./* /work/nfs_root/bin/4.1 测试使用 wifi 步骤4.1.1 创建密码配置文件在开发板根文件系统/etc/目录创建 wpa_supplicant.conf 文件 ,输入以下内容:# wpa-psk/tkipctrl_interface=/var/run/wap_supplicant ap_scan=1 update_config=1network={ssid=208key_mgmt=wpa-pskproto=wpapairwise=tkip ccmpgroup=tkip ccmp #priority=2psk=www.linux.com}4.1.2 创建网卡控制接口在开发板终端输入:
[root@xiaolong /]#mkdir /var/run/wap_supplicant -p4.1.3 插入 360wifi 测试将 360wifi 插入开板 usb 口,安装 wifi 驱动:[root@xiaolong /driver/360wifi]# insmod mt7601usta.ko[ 47.260000] rtusb init rt2870 --- >[ 47.260000] usbcore: registered new interface driver rt2870[ 94.105000] usb 1-2.2: new high-speed usb device number 7 using s5p-ehci[ 94.220000] usb 1-2.2: new usb device found, idvendor=148f, idproduct=760b[ 94.220000] usb 1-2.2: new usb device strings: mfr=1, product=2, serialnumber=3[ 94.220000] usb 1-2.2: product: 802.11 n wlan[ 94.220000] usb 1-2.2: manufacturer: mediatek[ 94.220000] usb 1-2.2: serialnumber: 1.0[ 94.225000] < -- rtmpalloctxrxringmemory, status=0[ 94.230000] < -- rtmpallocadapterblock, status=0[ 94.235000] bulk in maxpacketsize = 512 [ 94.235000] ep address = 0x84[ 94.240000] bulk in maxpacketsize = 512[ 94.245000] ep address = 0x85[ 94.245000] bulk out maxpacketsize = 512 [ 94.250000] ep address = 0x 8[ 94.255000] bulk out maxpacketsize = 512 [ 94.255000] ep address = 0x 4[ 94.260000] bulk out maxpacketsize = 512 [ 94.265000] ep address = 0x 5[ 94.265000] bulk out maxpacketsize = 512 [ 94.270000] ep address = 0x 6[ 94.275000] bulk out maxpacketsize = 512[ 94.280000] ep address = 0x 7[ 94.280000] bulk out maxpacketsize = 512[ 94.285000] ep address = 0x 9查看识别成功的网卡:[root@xiaolong /driver/360wifi]# iwconfig lo no wireless extensions.ra0 ralink sta sit0 no wireless extensions.eth0 no wireless extensions.ip6tnl0 no wireless extensions.4.1.4 启动网卡[root@xiaolong /]# wpa_supplicant -dwext -ira0 -c /etc/wpa_supplicant.conf -b[ 257.765000] current mac: =00:87:46:19:8f:eb[ 257.780000] nicreadeepromparameters: rxpath = 1, txpath = 1[ 257.790000] 20mhz bw, 2.4g band-03030505, adata = 03030505, gdata = 03030505 [ 257.790000] 20mhz bw, 2.4g band-00000004, adata = 00000004, gdata = 00000004[ 257.795000] 20mhz bw, 2.4g band-00000002, adata = 00000002, gdata = 00000002[ 257.800000] 20mhz bw, 2.4g band-00000002, adata = 00000002, gdata = 00000002[ 257.800000] 20mhz bw, 2.4g band-ffff0002, adata = ffff0002, gdata = ffff0002[ 258.020000] buildchannel # 1 :: pwr0 = 16, pwr1 =0, flags = 0buildchannel # 2 :: pwr0 = 16, pwr1 =0, flags = 0buildchannel # 3 :: pwr0 = 16, pwr1 =0, flags = 0buildchannel # 4 :: pwr0 = 16, pwr1 =0, flags = 0buildchannel # 5 :: pwr0 = 17, pwr1 =0, flags = 0buildchannel # 6 :: pwr0 = 17, pwr1 =0, flags = 0buildchannel # 7 :: pwr0 = 17, pwr1 =0, flags = 0buildchannel # 8 :: pwr0 = 17, pwr1 =0, flags = 0buildchannel # 9 :: pwr0 = 17, pwr1 =0, flags = 0buildchannel # 10 :: pwr0 = 18, pwr1 =0, flags = 0buildchannel # 11 :: pwr0 = 18, pwr1 =0, flags = 0buildchannel # 12 :: pwr0 = 18, pwr1 =0, flags = 0buildchannel # 13 :: pwr0 = 18, pwr1 =0, flags = 0buildchannel # 14 :: pwr0 = 18, pwr1 =0, flags = 0 > /etc/resolv.conf[root@xiaolong /]# echo nameserver 202.96.134.33 > > /etc/resolv.conf开发板中要想 ping 通外网 ip,需要设置默认网关,这个网关必须要和所连接的路由器设置的网关相同(resolv.conf 文件内容一般可以自动获取,不用手动填)。
ping 百度示例:
[root@xiaolong /]# ping www.baidu.com[ 2742.105000] cmdthread : cmdthread_set_asic_wcid : wcid = 1, settid = 400000, deletetid = ffffffff.[ 2742.105000] 1-macvalue= d4c0c7d0,[ 2742.105000] 2-macvalue= 411284,ping www.baidu.com (119.75.218.70): 56 data bytes64 bytes from 119.75.218.70: seq=0 ttl=51 time=55.509 ms 64 bytes from 119.75.218.70: seq=1 ttl=51 time=53.253 ms 64 bytes from 119.75.218.70: seq=2 ttl=51 time=62.990 ms64 bytes from 119.75.218.70: seq=3 ttl=51 time=44.665 ms4.2.0 自动获取 ip 地址使用 busybox 的 udhcpc 工具。一般默认的配置都是选中的,为了确保成功,还是需要去确认一下。
1. 首先配置 linux 内核使其支持 dhcp,以及 socket:[*] networking support --- > packet socket[*] ip: dhcp support[*] network packet filtering framework (netfilter) --- >2. 配置 busybox:networking utilities --- > udhcp server/client --- >[ * ] udhcp server (udhcpd) udhcp client (udhcpc)[ * ] lease display utility (dumpleases)[ * ] log udhcp messages to syslog (instead of stdout)[ * ] compile udhcp with noisy debugging messages3. 编译安装 busyboxmakemake install4. 编译完并安装 busybox 后,将 busybox 源码目录下的 example/udhcpc/simple.script 脚本文件 cp 到根文件系统的/usr/share/udhcpc/default.script 文件中。如果没有目录先创建目录:[root@xiaolong /]#mkdir /usr/share/udhcpc -p5. 自动获取 ip:[root@xiaolong /]# udhcpc -i ra0 udhcpc (v1.23.2) startedsetting ip address 0.0.0.0 on ra0 sending discover...sending select for 192.168.1.10...lease of 192.168.1.10 obtained, lease time 7200setting ip address 192.168.1.10 on ra0 deleting routersroute: siocdelrt: no such processadding router 192.168.1.1 获取的 ip 地址recreating /etc/resolv.conf 自动更新 resolv.conf 文件adding dns server 211.162.66.66adding dns server 211.162.77.776. 查看获取到的 ip:[root@xiaolong /]# ifconfig ra0link encap:ethernet hwaddr 00:87:46:19:8f:eb inet addr:192.168.1.10 bcast:192.168.1.255 mask:255.255.255.0 inet6 addr: fe80::287:46ff:fe19:8feb/64 scope:linkup broadcast running multicast mtu:1500 metric:1rx packets:260636 errors:0 dropped:0 overruns:0 frame:0 tx packets:528 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000rx bytes:55031927 (52.4 mib) tx bytes:33119 (32.3 kib)7. ping 百度测试:
自动获取 ip 也可以使用第三方其他工具(一般使用 busybox 自带的即可):
下载 dhcp 源码,编译后得到 dhclient 工具,实现 dhcp client.
(1) 下载源码:http://gd.tuwien.ac.at/infosys/servers/isc/dhcp/ ,选中 dhcp-3.1.3.tar.gz;
(2) 解压 tar -zxvf dhcp-3.1.3.tar.gz,然后进入./dhcp-3.1.3/,运行配置./configure,之后生成 work.linux-2.2 文件夹, 进入 work.linux-2.2/client/,输入 make cc=arm-linux-gcc -static,将编译生成 dhclient。
(3) 拷贝生成的 dhclient 到 mini2440 开发板上,为方便使用,可以放在/usr/bin/下;拷贝另外两个配置文件到开发板,分别是 /dhcp-3.1.3/client/dhclient.conf 和/dhcp-3.1.3/client/scripts/linux 到开发板的/sbin/目录下。并改名后一个文件为 dhclient-script ,并修改该文件的第一行 #! /bin/bash 为 #! /bin/sh ,保存后,修改权限 chmod +x /sbin/dhclient-script。
(4) 为 eth0 或者 wlan0 配置 dhcp 服务,输入 dhclient eth0 或者 dhclient wlan0 即可.
4.2.1 开机自动加载连接路由器可以将以下代码加载到 etc/profile 文件里或者是/etc/rcs 文件里,开机自动执行。
insmod mt7601usta.ko #安装驱动wpa_supplicant -dwext -ira0 -c /etc/wpa_supplicant.conf -b #启动网卡udhcpc -i ra0 #自动获取 ip 地址--busybox 自带的工具5.1 其他工具移植方法5.1.1 安装flex工具库系统自带的flex库版本太低,需要升级!
flex 是一个高效、免费的开源框架,可用于构建具有表现力的 web应用程序,这些应用程序利用adobe flash player和adobe air, 可以实现跨浏览器、桌面和操作系统。虽然只能使用 flex 框架构建 flex应用程序,但adobe flash builder(之前称为 adobe flex builder?)软件可以通过智能编码、交互式遍历调试以及可视设计用户界面布局等功能加快开发。
下载链接:http://sourceforge.net/projects/flex/files/
将下载的压缩文件拷贝至虚拟机,解压,配置,编译安装。
[root@xiaolong 360_wifi]# tar xvf flex-2.6.0.tar.bz2[root@xiaolong 360_wifi]# cd flex-2.6.0[root@xiaolong flex-2.6.0]# ./configure[root@xiaolong flex-2.6.0]# make && make install
5.1.2 安装 bison下载链接:http://ftp.gnu.org/gnu/bison/
gnu bison 是属于 gnu 项目的一个语法分析器生成器。
gnu bison是一种通用目的的分析器生成器。它将lalr(1)上下文无关文法的描述转化成分析该文法的c程序。 一旦你精通bison,你可以用它生成从简单的桌面计算器到复杂的程序设计语言等等许多语言的分析器。
将下载好的bison-3.0 .tar.gz压缩包拷贝到虚拟机解压,解压后,进入到解压后的目录,配置,编译,安装。
[root@xiaolong bison-3.0]# ./configure[root@xiaolong bison-3.0]# make && make install
5.1.3 安装libnl库libnl套件是netlink库提供api的集合协议基于linux内核的接口。
netlink ipc机制主要是在内核和用户空间之间提供接口。 它被设计为一个更灵活的ioctl的继任者,主要提供网络相关的内核配置和监控接口。
下载链接:http://www.infradead.org/~tgr/libnl/
将下载后的libnl-3.2.25.tar.gz压缩包拷贝到虚拟机,解压,配置,编译,安装。
[root@xiaolong work]# tar xvf libnl-3.2.25.tar.gz[root@xiaolong libnl-3.2.25]# ./configure --host=arm-linux --prefix=$pwd/tmp--prefix=$pwd/tmp :表示指定编译安装的路径 ---安装路径为当前目录的tmp文件夹--host=arm-linux :指定编译器[root@xiaolong libnl-3.2.25]# make && make install
5.1.4 拷贝依赖库libnl库安装成功之后,在tmp目录下会生成lib目录。


料仓料位超声波传感器用于探测集装箱内部是否有物体
苹果将在2021年4月推出第二代AirPods Pro
无线充电宝哪款好?便宜好用的无线充电宝推荐
基于空中接口射频的容量测试
使用MAX7461失同步报警实现简单、快速的标准清晰度视频检测
Linux 驱动开发:USB无线wifi驱动开发(MT7601)、完成WIFI管理工具安装
曙光助力新网银行践行数字普惠金融
牙科应用3D打印技术,需要怎样的设计软件
AI赋能5G智能终端 虹软联手产业伙伴亮相MWC2019
手机流畅度最新排行榜 看看你的排第几?
是德科技推出PathWave ADS 2024新版本,加速5G毫米波设计
一种在半导体基板上形成微细结构的激光加工装置和加工方法
导电胶点胶代加工过程中针头的选择和使用方法
坚果3评测 平衡实力融入千元市场
中国移动致力于无线智控平台及网络智能化技术的研发
快充对电池是否存在加速损伤?发展快充也应有度
治理大气臭氧污染需要vocs在线监测仪吗?
安捷伦8720D 20G网络分析仪介绍
余音SG-03:越级妖物,耳朵的惊喜
Python爬虫:使用哪种协议的代理IP最佳?