交叉编译的几个步骤
1.目标系统的toolchain
2.设置CC环境变量,或者直接修改Makefile,有些开源软件需要执行 ./configure生成Makefile
3.CFLAGS指定编译所需要的C库头文件、依赖库头文件位置
4.LIBS指定依赖库位置
1,安装GCC
解压厂家提供的toolchain
1.1 设置环境变量
export PATH=$PATH:/opt/loongson-gnu-toolchain-8.3.2k1000la-x86_64-loongarch64-linux-gnu-rc1.1a/bin
2,编译依赖库
2.1 libnl
libnl - Netlink Protocol Library Suite
uisrc@ubuntu:~/uisrc-lab-loongarch/app$ cd libnl-3.2.25/
uisrc@ubuntu:~/uisrc-lab-loongarch/app/libnl-3.2.25$ ls
aclocal.m4 ChangeLog configure.ac etc lib libnl-cli-3.0.pc.in libnl-nf-3.0.pc.in libnl.sym.in Makefile.am man src
build-aux configure COPYING include libnl-3.0.pc.in libnl-genl-3.0.pc.in libnl-route-3.0.pc.in m4 Makefile.in python tests
uisrc@ubuntu:~/uisrc-lab-loongarch/app/libnl-3.2.25$
./configure CC=/opt/loongson-gnu-toolchain-8.3.2k1000la-x86_64-loongarch64-linux-gnu-rc1.1a/bin/loongarch64-linux-gnu-gcc --host=loongarch64-unknown-linux-gnu CFLAGS=-I/usr/include/libnl3
make
2.2 openssl
[ Downloads ] - /source/index.html
export CC=/opt/loongson-gnu-toolchain-8.3.2k1000la-x86_64-loongarch64-linux-gnu-rc1.1a/bin/loongarch64-linux-gnu-gcc
./config no-asm --prefix=/home/uisrc/uisrc-lab-loongarch/app/openssl-3.0.13/usr
make
3 编译hostapd
cp defconfig .config
CONFIG_LIBNL20=y
修改Makefile
CC=/opt/loongson-gnu-toolchain-8.3.2k1000la-x86_64-loongarch64-linux-gnu-rc1.1a/bin/loongarch64-linux-gnu-gcc
#指定依赖库头文件所在的位置
CFLAGS += -I$(APP_PATH)/libnl-3.2.25/include -I$(APP_PATH)/openssl-3.0.13/include
#C库的头文件最好也用toolchain中的头文件,如果有些厂商的toolchain中不包含头文件,可以自己下载相同版本的头文件
CFLAGS += -I/opt/loongson-gnu-toolchain-8.3.2k1000la-x86_64-loongarch64-linux-gnu-rc1.1a/sysroot/usr/include
#指定依赖库所在的位置
LIBS += -L$(APP_PATH)/libnl-3.2.25/lib/.libs -lnl -lnl-genl-3 -L$(APP_PATH)/openssl-3.0.13/
4.运行
export LD_LIBRARY_PATH=/usr/lib
./hostapd -B ./hostapd.conf
5.报错
实时过程中会遇到有些函数链接不到的问题,这些函数调用的是第三方库,这时候可以用nm命令检查生成后的库中是否有该函数