一、准备
源码下载链接:
openssl : https://www.openssl.org/source/ openssl-3.1.6.tar.gzhttps://www.openssl.org/source/openssl-3.1.6.tar.gz
libnl : http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html
wpa_suplicant: http://w1.fi/releases/
wpa_supplicant-2.10.tar.gzhttps://w1.fi/releases/wpa_supplicant-2.10.tar.gz
二、编译
openssl 编译:
#mkdir _install
#./config no-asm shared --prefix=$PWD/_install --cross-compile-prefix=aarch64-linux-gnu-
#make CC=aarch64-linux-gnu-gcc
#make insatll
编译报错aarch64-linux-gnu-gcc: error: unrecognized command line option '-m64'
打开Makefile 查找里面的 ‘-m64’,并将其删除即可
libnl编译:
#mkdir _install
#./configure --host=aarch64-linux-gnu --prefix=$PWD/_install
#make
#make install
wpa_supplicant 编译:
添加配置:
#cd wpa_supplicant/
#cp defconfig .config
在Makefile中添加libssl和libnl的路径,如下:
CFLAGS += -I/home/ubuntu/workplace/tinkerboard/wifi/openssl/openssl-3.1.6/_install/include
LIBS += -L/home/ubuntu/workplace/tinkerboard/wifi/openssl/openssl-3.1.6/_install/lib64
CFLAGS += -I/home/ubuntu/workplace/tinkerboard/wifi/libnl/libnl-3.9.0/_install/include
LIBS += -L/home/ubuntu/workplace/tinkerboard/wifi/libnl/libnl-3.9.0/_install/lib
编译:
#make CC=aarch64-linux-gnu-gcc
编译报错aarch64-linux-gnu/bin/ld: cannot find -ldbus-1 在.config中注释dbus相关
# Add support for new DBus control interface
# (fi.w1.wpa_supplicant1)
#CONFIG_CTRL_IFACE_DBUS_NEW=y
# Add introspection support for new DBus control interface
#CONFIG_CTRL_IFACE_DBUS_INTRO=y
若需静态编译生成wpa_supplicant, 在Makefile中找到对应的编译选项加上-static字段即可
wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
$(Q)$(LDO) --static $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) -lm -lpthread
@$(E) " LD " $@
wpa_cli: $(OBJS_c)
$(Q)$(LDO) -static $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
@$(E) " LD " $@
静态编译如果报错:
Package libnl-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libnl-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libnl-3.0' found
可如下修改src/drivers/drivers.mak文件,将链接的库直接修改为libnl-3.0
PKG_CONFIG ?= pkg-config
# DRV_CFLAGS += $(shell $(PKG_CONFIG) --cflags libnl-3.0)
DRV_CFLAGS += -llibnl-3.0