少于 1 分钟阅读 次阅读

参考链接

问题背景

参考文章《RK 3588 Ubuntu SDK 编译 Linux Header(标头)》,在x86上交叉编译并在arm板上安装了linux-header,尝试使用其编译内核模块时,出现报错:

/bin/sh: 1: scripts/basic/fixdep: Exec format error

/bin/sh: 1: scripts/mod/modpost: Exec format error

问题解析

报错表面在编译内核模块时,尝试使用/usr/src/linux-headers-5.10.160+/下的scripts/basic/fixdepscripts/mod/modpost,但发现架构不对。使用file命令查看,发现都为x86的架构。搜索这个问题,发现比较普遍,即使交叉编译时指定了正确的交叉编译链和目标架构,仍有可能出现。

解决方式

在rk3588上

  • 重新编译生成arm64架构的fixdep ```bash cd /usr/src/linux-headers-5.10.160+/scripts/basic

sudo gcc fixdep.c -o fixdep


- 重新编译生成arm64架构的modpost
```bash
cd /usr/src/linux-headers-5.10.160+/scripts/mod

sudo gcc file2alias.c sumversion.c modpost.c -o modpost

重新尝试编译内核模块,问题解决。

留下评论