0. 编译工具链
#用root账户
su
#安装基础编译环境
apt-get install gcc g++ libgcc1 libg++ make gdb
#创建目录
mkdir -p /opt/toolchain/
cd /opt/toolchain/
#根据需要下载对应编译工具链
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
#解压
xz -d gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
tar xvf gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar
#加入环境变量
PATH=/opt/toolchain/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin:"${PATH}"
#生效环境变量
source /etc/bash.bashrc
#查看是否安装成功
arm-linux-gnueabi-gcc –v
#安装解析器
sudo apt-get install bison flex
sudo apt-get install pkg-config
1. 编译libnl
if [ -d "$(pwd)/__install" ];then
mkdir -p $(pwd)/__install
fi
GCC_PATH=/opt/toolchain/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc
./configure CC=$GCC_PATH \
--prefix=$(pwd)/__install \
--host=arm-none-linux-gnueabihf \
CFLAGS=-I/usr/include/libnl3
make && make install
3.编译openssl
if [ -d "$(pwd)/__install" ];then
mkdir -p $(pwd)/__install
fi
GCC_PREFIX=/opt/toolchain/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-
#no-asm 不使用汇编代码代码加速编译过程
#-disable-shared 禁止生成动态连接库
#-enable-static 生成静态连接库
#no-async 交叉编译工具链没有提供GNU C的ucontext库
#prefix 安装路径
#cross-compile-prefix 交叉编译工具前缀
./config no-asm -disable-shared -enable-static no-async --prefix=$(pwd)/__install --cross-compile-prefix=$GCC_PREFIX
sed -i "s/-m64//g" $(pwd)/Makefile
make && make install
4.编译hostapd
cp defconfig .config
sudo find / -name "libnl-3.0.pc"
export PKG_CONFIG_PATH=/media/test/workspace/complie_hostapd/libnl-3.2.25/__install/lib/pkgconfig/libnl-3.0.pc
sudo apt-get install libnl-3-dev
sudo apt-get install libnl-genl-3-dev
#修改hostapd的Makefile
CFLAGS += -I$(abspath ../../openssl-1.1.1w/__install/include)
CFLAGS += -I$(abspath ../../libnl-3.2.25/__install/include)
LIBS += -L../../libnl-3.2.25/__install/lib
LIBS += -L../../openssl-1.1.1w/__install/lib
CC=/opt/toolchain/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc
#完了编译
make
#调试ok后可以strip了
/opt/toolchain/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-strip hostapd
备注:
如何修改root用户密码
#先修改当前用户的密码
sudo passwd
#在修改root用户的密码
su root