Linux中交叉编译8812au驱动-NanoPi Neo2

构建NanoPi Neo2交叉编译环境

# apt install build-essential

配置编译工具链

Linaro下载gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz ,解压到/opt

# tar xvf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt

将/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin 添加到PATH中

$ export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin

编译内核

下载neo2官方内核并使用对应分支如:

$ cd ~/
$ git clone https://github.com/friendlyarm/linux.git
$ cd ~/linux
$ git checkout sunxi-4.11.y

编译

$ make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ make Image dtbs modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

编译rtl88Xxau

$ cd ~/
$ git clone https://github.com/aircrack-ng/rtl8812au 
$ cd rtl8812au
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu KSRC=~/linux

若是载入ko时遇到version magic 的问题,可一尝试将~/linux/include/linux/vermagic.h 中UTS_RELEASE ” ” 改为目标系统对应的内核版本号 如 “4.14.52” ” “,再次编译后用modinfo查看vermagic。

$ modinfo 88Xxau.ko
name: 88XXau 
vermagic: 4.14.52 SMP mod_unload aarch64

Update 20190702

今天证实以上方法编译出来的ko,虽然可以成功载入,但是无线网卡插上去后实际不可用。

只能移步kernel.org下载对应版本的内核源代码,将下面的附件重命名为.config 复制到解压后的内核目录后编译。

config-neo2-aarch64

$ cd ~/
$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.14.52.tar.xz
$ tar xvf  linux-4.14.52.tar.xz 
$ cp config -neo2-aarch64.txt ~/linux-4.14.52/.config
$ cd ~/linux-4.14.52
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu
$ cd ~/rtl8812au 
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu KSRC=~/linux-4.14.52