ubuntu下交叉编译arm内核模块

安装编译环境及下载交叉编译工具:

1

2

3

4

5

apt-get install gcc make pkg-config git bison flex libelf-dev libssl-dev libncurses5-dev bc

wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

tar -Jxvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

export ARCH=arm64

export CROSS_COMPILE=/root/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

查看内核版本:

1

2

uname -r

4.18.7-aml-s9xxx

下载内核源码:

1

2

3

4

git clone https://github.com/150balbes/Amlogic_s905-kernel.git

cd Amlogic_s905-kernel

#使用4.18.7内核

git checkout 20181012

初始化配置,不做这步直接编译模块会提示错误: fatal error: include/generated/autoconf.h: No such file or directory。

1

2

3

cp config_5.60 .config

make prepare

make scripts

编译指定模块:

1

2

make M=net/ipv4/ CONFIG_TCP_CONG_BBR=m modules

make M=drivers/usb/class CONFIG_USB_PRINTER=m modules

编译所有模块:

1

2

make modules

make modules_install INSTALL_MOD_PATH=/

复制模块到目标机器对应目录并加载:

1

2

3

4

cp tcp_bbr.ko /lib/modules/`uname -r`/kernel/net/ipv4

#echo 'kernel/net/ipv4/tcp_bbr.ko:' >> /lib/modules/`uname -r`/modules.dep

depmod

modprobe tcp_bbr

加载模块时出现invalid module format的错误,是version magic版本不一致或crc校验不通过,可通过modinfo查看本机模块和新编译模块version magic版本信息,通过dmesg查看log出现以下错误:

1

sch_fq: version magic '4.18.7 SMP preempt mod_unload aarch64' should be '4.18.7-aml-s9xxx SMP preempt mod_unload aarch64'

可见内核版本后缀不一样,在编译时添加版本后缀:

1

make LOCALVERSION="-aml-s9xxx"

编译模块时添加版本后缀无效?那就在初始时添加,后续编译时不要再次添加。

1

make LOCALVERSION="-aml-s9xxx" modules_prepare

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值