
我正在嘗試為 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
則不會建立。