2011-12-18 62 views
4

對於一個學術項目,我正在尋找將源文件(myfile.c)添加到kernel/目錄,與exit.cfork.c相同的目錄。構建系統似乎不會自動獲取新文件,因爲我正在對「」中定義的函數執行「未定義引用」鏈接錯誤。我怎麼能把這個文件合併?內核:如何爲內核構建添加新的源文件?

回答

5

您需要將相應的目標文件添加到kernel/Makefile。如果你對你的代碼配置變量,那麼你可以使用:

obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o 

如果你正在構建你的代碼,而配置變量,那麼你只把它添加到obj-y變量:

obj-y += zerostimulus.o 

配置變量擴展爲y,mn,具體取決於功能是內置的,構建爲模塊還是關閉。然後建立obj-y,obj-m變量。

2

沒錯!

只是一個附錄:構建內核之前,你知道,在運行「make menuconfig」可以設置哪些功能將內建的內核映像(Ÿ),這將作爲一個可加載模塊啓用()並且不會被啓用(n)。

如果您希望能夠爲您的新功能進行設置,您將能夠編輯Kconfig文件,您可以在新文件的同一文件夾中找到該文件。在你的情況「linux-x.y.z/kernel/Kconfig

這是一個例子:

config ZERO_STIMULUS_FEATURE 
    tristate "My new feature" 
    default m 
    ---help--- 
     This is my brand new feature 
     Here's a multi-line description 

一個通常的錯誤是將「config CONFIG_ZERO_STIMULUS_FEATURE」,而不是「config ZERO_STIMULUS_FEATURE‘:不要在這裏添加前綴’CONFIG_

如果您的功能無法作爲模塊加載,則必須使用「bool」關鍵字而不是「tristate」。看看其他的Kconfig文件,你也會看到設置依賴關係是多麼容易。

此致敬禮, /天使