我正在尝试为 Devkit 8000 构建 Linux 设备驱动程序。我收到以下错误消息:
当我尝试遵循它的指示时,我被问了一堆是/否问题,我不太明白。最后,我可以在 25 个不同的处理器之间进行选择(?):
这是我的生成文件:
ifeq ($(KERNELRELEASE),)
KERNELDIR = ~/sources/linux-3.2.6
PWD := $(shell pwd)
modules:
$(MAKE) ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- -C $(KERNELDIR) M=$(PWD) modules
.PHONY: modules clean
else
# called from kernel build system: just declare what our modules are
obj-m := LED_timer.o
endif
我认为我的代码本身还不相关,而且我知道我的源代码充满了错误,你不想看到它,哈哈。
答案1
你还没有说你从哪里得到你正在使用的源代码,但显然.config
它是无效的。这用于设置各种选项,例如处理器类型。这些选项实际上有数百个,彼此之间有着复杂的依赖关系(例如,您选择的处理器将影响您拥有的其他选择)。
香草源.config
中没有;您需要提供或创建一个。 当来自先前版本并且必须更新时make oldconfig
使用。.config
有时这个过程不能完全自动化,你最终基本上会运行make config
,它使用 CLI 界面;如果您尝试make oldconfig
不进行配置,也可能会发生这种情况。
您应该查看更图形化的内容make menuconfig
,以便更好地了解这一切。
然而,除非您知道自己在做什么,否则从零开始并尝试获得适合您的配置是不可能的。理想情况下,您可以从用于创建正在运行的内核的内核开始。如果您只是构建一个模块,则尤其如此;虽然您不需要构建实际的内核,但为了编译模块,必须知道要使用的内核是如何编译的。
希望您可以在/proc/config.gz
目标系统上找到它。这不是磁盘文件,系统必须正在运行才能检索它。它是 gzip 压缩的
gunzip config.gz
mv config .config
应该做。将其复制到源代码树中并运行make menuconfig
以添加要构建的模块的指令。
如果不存在,您将必须追踪所使用的配置。 另请注意,如果您正在构建模块,则需要使用完全相同的内核版本。
这是总体概述有关编译过程的信息(可能也有帮助),请先阅读 #2 和 3。
答案2
首先我们必须清除旧的配置,例如make mrproper
.
之后重新运行make menuconfig
。如果您明确选择了不需要的项目,.config
则不会创建。