目录
1、wireless tools
下载:
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.html
编译:
tar xzvf wireless_tools.29.tar.gz
cd wireless_tools.29/
vi Makefile
CC = arm-linux-gnueabihf-gcc
AR = arm-linux-gnueabihf-ar
RANLIB = arm-linux-gnueabihf-ranlib
make
拷贝:
iwlist iwconfig iwspy iwpriv ifrename iwevent iwgetid -> 目标板:/usr/bin/
libiw.so.29 -> 目标板:/usr/lib/
2、iw
iw工具是iwconfig的替代者,而在编译iw前需要先编译所依赖的libnl库。
① libnl
下载:
Index of /~tgr/libnl/files
编译:
tar xzvf libnl-3.2.25.tar.gz
cd libnl-3.2.25/
mkdir tmp
./configure --host=arm-ca9-linux-uclibcgnueabihf --prefix=$PWD/tmp/
make
make install
如果依赖libnl的动态库编译的工具则需要拷贝tmp/lib/* -> 目标板:/usr/lib/
如果想依赖静态库编译有如下方法:
1)、傻瓜操作,将动态库统统删掉
2)、BUILD_STATIC = y(可能没有定义这个宏,也可能不叫这个名字,所以这个办法不一定可行)
3)、问下度娘
② iw
下载:
Index of /pub/software/network/iw/
编译:
tar xzvf iw-3.11.tar.gz
cd iw-3.11/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/song/work/WiFi2/libnl-3.5.0/tmp/lib/pkgconfig
make CC=arm-ca9-linux-uclibcgnueabihf-gcc
拷贝 iw -> 目标板:/usr/bin/
3、wpa_supplicant
前面wireless tools和iw工具都只能连接OPEN和WEP加密方式的WiFi,而wpa_supplicant除了以上两种加密方式,还支持WPA/WPA2加密方式的WiFi。
wpa_supplicant依赖于libopenssl库和libnl库,需要先编译。
① libopenssl
下载:
/source/index.html
编译:
tar xzvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g/
mkdir tmp
./config shared no-asm --prefix=$PWD/tmp/
vi Makefile # 修改以下变量
CROSS_COMPILE=arm-ca9-linux-uclibcgnueabihf-
CNF_CFLAGS=-pthread
CNF_CXXFLAGS=-std=c++11 -lpthread
make
make install
如果依赖openssl的动态库编译 wifi 工具则需要拷贝tmp/lib/* -> 目标板:/usr/lib/
② libnl
参考iw工具的libnl编译。
③ wpa_supplicant
下载:
Index of /releases
编译:
tar xzvf wpa_supplicant-2.7.tar.gz
cd wpa_supplicant-2.7/wpa_supplicant/
cp defconfig .config
vi .config
# openssl
CFLAGS += -I/home/song/work/WiFi2/openssl-1.1.0h/tmp/include
LIBS += -L/home/song/work/WiFi2/openssl-1.1.0h/tmp/lib -lssl -lcrypto# libnl
CFLAGS += -I/home/song/work/WiFi2/libnl-3.5.0/tmp/include/libnl3
LIBS += -L/home/song/work/WiFi2/libnl-3.5.0/tmp/lib/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/song/work/WiFi2/libnl-3.5.0/tmp/lib/pkgconfig
make CC=arm-ca9-linux-uclibcgnueabihf-gcc
如果遇到如图所示的编译问题,原因是依赖的库文件无法找到,需要检查lib路径和include路径
拷贝:
wpa_cli wpa_supplicant wpa_passphrase -> 目标板:/usr/bin/
4、DHCP
下载:
ftp://ftp.isc.org/isc/dhcp/
编译:
tar xzvf dhcp-4.2.6.tar.gz
cd dhcp-4.2.6/
./configure --host=arm-linux-gnueabihf ac_cv_file__dev_random=yes
tar xzvf bind/bind.tar.gz -C bind/
vi bind/bind-9.9.5/lib/export/dns/Makefile.in
gen: ${srcdir}/gen.c
${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
vi bind/Makefile
(cd ${bindsrcdir} && ./configure BUILD_CC=gcc c_cv_file__dev_random=yes --host=arm-linux-gnueabihf --with-randomdev=no --disable-kqueue.......
mkdir tmp
make
make DESTDIR=$PWD/tmp install
拷贝:
tmp/usr/local/sbin/dhclient、dhcpd -> 目标板:/usr/bin/
tmp/usr/local/etc/dhclient.conf.example、dhcpd.conf.example -> 目标板并改名:/etc/dhclient.conf、dhcpd.conf
client/scripts/linux -> 目标板:/sbin/dhclient-script
chmod +x dhclient-script
vi dhclient-script
#!/bin/bash -> #!/bin/sh
5、hostapd
① libopenssl
参考wpa_supplicant工具的libopenssl编译。
② libnl
参考iw工具的libnl编译。
② hostapd
下载:
Index of /releases
编译:
tar xzvf hostapd-2.9.tar.gz
cd hostapd-2.9/hostapd/
cp defconfig .config
vi .config
# openssl
CFLAGS += -I/home/linriming/test/wifi_tools/openssl-1.1.1g/tmp/include
LIBS += -L/home/linriming/test/wifi_tools/openssl-1.1.1g/tmp/lib -lssl -lcrypto# libnl
CFLAGS += -I/home/linriming/test/wifi_tools/libnl-3.2.25/tmp/include/libnl3
LIBS += -L/home/linriming/test/wifi_tools/libnl-3.2.25/tmp/lib
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/linriming/test/wifi_tools/libnl-3.2.25/tmp/lib/pkgconfig
make CC=arm-linux-gnueabihf-gcc
拷贝:
hostapd hostapd_cli -> 目标板:/usr/bin/