【问题标题】:crosscompile a linuxmodule for arm(raspberryPi)为arm(raspberryPi)交叉编译一个linux模块
【发布时间】:2012-12-19 21:30:19
【问题描述】:

我正在尝试使用 crosstool-ng 1.15.3 为 raspberryPi(arm) 交叉编译一个(示例)linux 模块。

我得到以下输出:

markus@markus-R55S:~/Desktop/speakerarm$ make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- 
make -C /lib/modules/3.2.0-35-generic-pae/build SUBDIRS=/home/markus/Desktop/speakerarm modules
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-35-generic-pae'
  CC [M]  /home/markus/Desktop/speakerarm/speaker.o
In file included from /usr/src/linux-headers-3.2.0-35-generic-pae/arch/arm/include/asm/types.h:4:0,
                 from include/linux/types.h:4,
                 from include/linux/list.h:4,
                 from include/linux/module.h:9,
                 from /home/markus/Desktop/speakerarm/speaker.c:1:
include/asm-generic/int-ll64.h:11:29: fatal error: asm/bitsperlong.h: No such file or directory
compilation terminated.
make[2]: *** [/home/markus/Desktop/speakerarm/speaker.o] Error 1
make[1]: *** [_module_/home/markus/Desktop/speakerarm] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-35-generic-pae'
make: *** [default] Error 2

我猜想包含路径有问题。我的主机有内核 3.2.35,我的目标机器是 3.2.27+。我的错误是什么? Makefile 包含以下内容:

obj-m   := speaker.o

KDIR    := /lib/modules/$(shell uname -r)/build
PWD     := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

【问题讨论】:

    标签: arm kernel-module raspberry-pi cross-compiling


    【解决方案1】:

    有几点需要注意:

    1. 您正在针对开发主机的 linux 源代码树进行编译 - 从 -generic-pae 后缀判断可能不是内核主线。 ARM SoC 更改需要很长时间才能进入主线,而进入其他非 ARM 内核分支则更慢。建议您找到集成了 SoC 更改的内核树,并获取标记版本,例如 3.2 而不是 head。

    2. 您是否配置了 linux 构建系统来构建 ARM 内核?例如

    export ARCH=arm

    make clean

    make rpi_defconfig

    如果您不这样做,您的内核将被配置为 x86 构建,并且 /arch/arm 文件夹中的标头将不可用 - 即使您已设置 ARCH

    在构建模块之前尝试构建一个完整的内核并确保它首先工作是一个好主意。

    【讨论】:

      【解决方案2】:

      下载内核3.2.27rpi-3.3.27,并按照RPi_Kernel_Compilation中提到的步骤进行操作

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 1970-01-01
        • 2022-06-11
        • 2014-10-23
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 2014-05-01
        • 2014-01-25
        相关资源
        最近更新 更多