和菜鸟一起学linux之wifi相关应用的移植和使用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


一、 libnl移植

下载源码:​​http://www.infradead.org/~tgr/libnl/​​  libnl-3.2.21.tar.gz

解压缩后,在libnl-3.2.21当前目录下,新建build.sh,编辑内容如下:

---------------------------------------分割线----------------------------------------------------

#!/bin/sh
CFLAGS =”-I/home/eastmoon/rootfs/kernel/usr/include” \
CC=”arm-linux-gcc” \
./configure –host=arm-linux \
--prefix=/home/eastmoon/rootfs/usr




---------------------------------------分割线----------------------------------------------------

设置下build.sh的权限后,./build.sh 配置好以后,make下,再make install就ok了。

上面的的脚本简单说明下:

第2行为libnl需要包含的内核的头文件。

第3行为交叉编译的工具指定。

第4行是把需要的库install到相应的rootfs中去。

然后可以看到在rootfs/usr中就会有include/libnl3 和/lib下的一些相关的.so等库了。


二、 openssl移植

下载源码:​​http://www.openssl.org/source/​​  openssl-1.0.1e.tar.gz

解压缩后,在openssl-1.0.1e当前目录下,新建build.sh,编辑内容如下:

---------------------------------------分割线----------------------------------------------------

#!/bin/sh
./Configure \
Linux-arm \
-DL_ENDIAN –fPIC \
Linux:”arm-linux-gcc” \
--prefix = “home/eastmoon/rootfs/usr”




---------------------------------------分割线----------------------------------------------------

设置下build.sh的权限后,

./build.sh配置好以后,

make

再make install

然后可以看到在rootfs/usr中就会有include/openssl 和/lib下的一些相关.so等库了。


三、 hostapd移植

下载源码:​​http://w1.fi/hostapd/​​  hostapd-2.0.tar.gz

解压缩后,在hostapd-2.0目录下

cp defconfig .config //配置对应的config。

然后进入config中,在.config中需要加上依赖的头文件和库,添加内容如下:

---------------------------------------分割线----------------------------------------------------

CC=arm-linux-gcc
CFLAGS += -I/home/eastmoon/rootfs/usr/include
CFLAGS += -I/home/eastmoon/rootfs/usr/include/libnl3
LDFLAGS += -L/home/eastmoon/rootfs/usr/lib




---------------------------------------分割线----------------------------------------------------

然后编辑makefile

在开始出添加:

---------------------------------------分割线----------------------------------------------------

DESTDIR = /home/eastmoon/rootfs

---------------------------------------分割线----------------------------------------------------

接着make

之后就可以生成对应的应用程序。

再make install

这样对应的程序就会在rootfs/usr下的local/bin下了。


四、wpa_supplicant移植

下载源码:​​http://w1.fi/wpa_supplicant/​​ wpa_supplicant-2.0.tar.gz

这个和hostapd比较类似,几乎一样。

解压缩后,在wpa_supplicant-2.0目录下

cp defconfig .config //配置对应的config。

然后进入config中,在.config中需要加上依赖的头文件和库,添加内容如下:

---------------------------------------分割线----------------------------------------------------


CC=arm-linux-gcc
CFLAGS += -I/home/eastmoon/rootfs/usr/include
CFLAGS += -I/home/eastmoon/rootfs/usr/include/libnl3
LDFLAGS += -L/home/eastmoon/rootfs/usr/lib



---------------------------------------分割线----------------------------------------------------

然后要选上

CONFIG_TLS=internal

CONFIG_INTERNAL_LIBTOMMATH=y

这两个主要是我编译的不依赖与openssl,所以就编译内部的了。

接着make

之后就可以生成对应的应用程序,之后就可以使用了。


五、dhcp服务端和客户端的移植

    源码是程序员联合网下的。udhcp-0.9.8。

修改Makefile,CROSS_COMPILE=arm-linux-

make

然后生成了可执行文件udhcpd和udhcpc,其中udhcpd就是dhcp的服务端程序,udhcpc就是dhcp的客户端程序了。


六、boa移植

下载源码: ​​http://www.boa.org/​​ boa-0.94.13.tar.gz

解压缩后,

1、进入src目录,执行./configure,

2、接着修改Makefile

CC = arm-linux-gcc

CPP = arm-linux-gcc–E

3、然后将boa.c 文件中以下几行判断去掉即可。

//if ( setuid ( 0 ) != - 1 ) { 

     // DIE ( "icky Linux kernel bug!" ); 

//}

4、修改文件compat.h   P120

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

修改成

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

5、把src 文件夹下的config.c 里的if(!server_name){..........} (大概在266 行到286 行之间)注释掉

6、修改 src/log.c

注释掉

//if (dup2(error_log, STDERR_FILENO) == -1) {

//DIE("unable to dup2 the error log");

//}

7、make

之后就可以生成boa这个可执行的简单服务器了。


七、cgic移植

下载源码:​​http://www.boutell.com/cgic/​​ cgic205.tar.gz

解压后

1、 修改CC=arm-linux-gcc

2、 修改AR=arm-linux-ar

3、 修改RANLIB=arm-linux-ranlib

4、 gcc cgictest.o -o cgictest.cgi ${LIBS},

将其改成 $(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS}

5、gcc capture.o -o capture ${LIBS} ,

$(CC) $(CFLAGS) capture.o -o capture ${LIBS}

6、make

之后就可以生成辅助程序capture 和测试程序cgictest.cgi。


综上,对于以上源码的嵌入式平台的移植就结束了,那么接下来就是如何使用了。


一、 hostapd使用

从上面的移植可以得到相应的hostapd的可执行应用程序。那么接下来就是编辑配置文件了,编辑hostapd.conf如下:(这里没有使用密码什么的,要使用密码的话,可以百度去找)

---------------------------------------分割线----------------------------------------------------


ssid=my_hostapd
channel=10
interface=wlan0
bridge=br0
driver=nl80211
ignore_broadcast_ssid=0
macaddr_acl=0
#accept_mac_file=/etc/hostapd.accept
#deny_mac_file=/etc/hostapd.deny



---------------------------------------分割线----------------------------------------------------

接着要在etc下新建个mine.types的文件。

接着,就可以hostapd hostapd.conf

然后用手机或者PC机就可以搜索到对应的ssid为my_hostapd的路由器了。

然后别的wifi设备连接上后,通过静态分配ip就可以连接上这个路由器了。如果要用dhcp动态获取ip。可参考下面的方法。


二、 wpa_supplicant使用

从上面的移植可以得到相应的wpa_supplicant可执行应用程序。

运行wpa_supplicant –Dnl80211 –iwlan0 –c/etc/wifi/wpa_supplicant.conf&,后台中就启动了wpa_supplicant了。

这里要在/etc/下新建wifi目录,其中放入enropy.bin softap.conf 和wpa_supplicant.conf

其中wpa_supplicant.conf内容如下:


ctrl_interface=wlan0
updata_config=1




三、 dhcp使用

为了可以让pc机或者手机自动获取ip地址,所以需要dhcp的服务器。从上面的移植,可以得到udhcpd的可执行应用程序。那么接下来就是配置文件了,编辑dhcpd.conf如下:

---------------------------------------分割线----------------------------------------------------


interface wlan0
subnet 192.168.0.1 netmask 255.255.255.0{
range 192.168.0.10 192.168.0.250
}



---------------------------------------分割线----------------------------------------------------

接下来就只要udhcpd dhcod.conf就会在后台运行了。如果手机或者pc机去连接的话,这个dhcpd服务器就会分配ip给手机或者PC机了。


四、 wpa_cli使用

从上面的移植可以得到相应的wpa_cli可执行应用程序。这里,wpa_cli在/wpa这个目录下。

运行wpa_cli –iwlan0 –p/wpa/wlan0/wlan0

然后就进入了,wpa的client控制了。接着就可以进行扫描,连接等工作了。


scan
scan_results
add_network
set_network 0 ssid “要连接的路由”
set_network 0 key_mgmt NONE //无密码
set_network 1 key_mgmt NONE //wep密码
set_network 1 wep_key0 “your ap passwork”
set_network 0 key_mgmt WPA-PSK //wpa密码
set_network 0 psk "12345678"
set_network 0 priority 0
list_net
save_config
enable_net 0




五、 boa使用

从上面的移植可以得到相应的boa的可执行应用程序。那么接下来就是编辑配置文件了,在etc下建立boa文件夹,并且新建boa.conf文件,编辑boa.conf如下:(个人配置,供参考)

---------------------------------------分割线----------------------------------------------------


Port 80
User 0
Group 0
ErrorLog /mnt/log/boa/error_log
ServerName www.eastmoon.com
DocumentRoot /mnt/www
UserDir public_html
DirectoruIndex index.html
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /etc/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /mnt/www/cgi-bin/



---------------------------------------分割线----------------------------------------------------

然后只要运行boa就可以后台启动这个简单的web服务器了。


六、 cgic使用

从上面的移植可以得到相应的可执行应用程序。将capture 和cgictest.cgi 拷贝到主机的/tmp/www/cgi-bin 目录下。在工作站的浏览器地址栏输入

http://192.168.0.1/cgi-bin/cgictest.cgi ,可以看到页面,CGIC 库和测试脚本都移植成功。

然后就可以写cgic程序,放到那个目录下,就可以用了。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux

“和菜鸟一起学linux之wifi相关应用的移植和使用” 的相关文章