(一)交叉编译环境搭建
交叉编译工具链:aarch64-linux-gnu-*
编译平台:ubutun16.04
安装所需软件:sudo apt-get install autoconf libtool -y
(二)安装源码包装备
所需依赖库的源码安装包(文章中存放在:/home/ubuntu/build目录下):
(1)openssl-OpenSSL_1_0_2l.tar.gz
(2)libnl-3.2.25.tar.gz
(3)zlib-1.2.11.zip
(4)aircrack-ng-1.2.tar.gz
上述资源我已打包放在(点击下载)
(一)编译libopenssl
解压:tar zxvf openssl-OpenSSL_1_0_2l.tar.gz
cd openssl-OpenSSL_1_0_2l
./config no-asm shared --prefix=$(pwd)/__install --cross-compile-prefix=aarch64-linux-gnu-
修改Makefile:删除所有的’-m64’
make depend
make install
ls __install //查看是否编译成功
bin include lib ssl
(二)编译libnl
//解压
tar zxvf libnl-3.2.25.tar.gz
cd libnl
1、先编译x86版本
./configure
make
2、再交叉编译其他平台的
make distclean
./configure --host=aarch64-linux CC=aarch64-linux-gnu-gcc --prefix=$(pwd)/__install
make && make install
ls __install
etc include lib sbin share
(三)编译zlib
//解压:
unzip zlib-1.2.11.zip
cd zlib-master
1、先编译x86版本
./configure
make
2、再交叉编译其他平台的
./configure --prefix=$(pwd)/__install
vi Makefile
备注:./configure不支持–host选项,交叉编译时手动修改Makefile,将Makefile里所有的gcc(共有3处)、ar、ranlib均加上前缀aarch64-linux-gnu-
make
make install
ls include lib share
(四)编译aircrack-ng
//解压:
tar -zxvf aircrack-ng-1.2.tar.gz
cd aircrack-ng-1.2
1、先安装x86版本的
autoreconf --install
如果出现如下错误:
src/Makefile.am:333: error: Libtool library used but 'LIBTOOL' is undefined
src/Makefile.am:333: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
src/Makefile.am:333: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
src/Makefile.am:333: If 'LT_INIT' is in 'configure.ac', make sure
src/Makefile.am:333: its definition is in aclocal's search path.
则查看是否安装了libtool,如未安装,则执行:sudo apt-get install libtool 命令进行安装,如已安装,则参考:
https://blog.csdn.net/a13393665983/article/details/102184926
进行修改(aclocal -I /usr/share/aclocal1.10 -I /usr/share/libtool/m4 --install)。
./configure --with-experimental
make
2、再编译其他平台的
注意:首先要查看一下aarch64-linux-gnu-gcc和aarch64-linux-gnu-g++是否存在,如果不存在,切换root用户下进行编译。
在aircrack-ng的根目录下创建build.sh脚本,并写入以下编译命令
#!/bin/bash
./configure \
--with-experimental \
--host=aarch64-linux-gnu \
--prefix=$(pwd)/__install \
--with-openssl=/home/ubuntu/build/openssl-OpenSSL_1_0_2l/__install \
CFLAGS="-L/home/ubuntu/build/openssl-OpenSSL_1_0_2l/__install/lib \
-L/home/ubuntu/build/libnl-3.2.25/__install/lib \
-I/home/ubuntu/build/libnl-3.2.25/__install/include \
-I/home/ubuntu/build/openssl-OpenSSL_1_0_2l/__install/include \
-L/home/ubuntu/build/zlib-master/__install/lib \
-I/home/ubuntu/build/zlib-master/__install/include"
交叉编译
make distclean
sh build.sh
make
make install
bin libexec sbin share
bin、sbin目录下就是我们的aircrack-ng工具集了,把这些目录拷贝到目标系统相关路径下,如果运行过程缺少库的话,将上面移植的openssl、libnl也拷贝到目标系统相关路径下。
致谢:感谢此文(https://blog.csdn.net/cpongo3/article/details/93995894)博主提供了在mips下移植aircrack-ng作为参考。