一、 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程序,放到那个目录下,就可以用了。