對於一個學術項目,我正在尋找將源文件(myfile.c)添加到kernel/
目錄,與exit.c
和fork.c
相同的目錄。構建系統似乎不會自動獲取新文件,因爲我正在對「」中定義的函數執行「未定義引用」鏈接錯誤。我怎麼能把這個文件合併?內核:如何爲內核構建添加新的源文件?
4
A
回答
5
您需要將相應的目標文件添加到kernel/Makefile
。如果你對你的代碼配置變量,那麼你可以使用:
obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o
如果你正在構建你的代碼,而配置變量,那麼你只把它添加到obj-y
變量:
obj-y += zerostimulus.o
配置變量擴展爲y
,m
或n
,具體取決於功能是內置的,構建爲模塊還是關閉。然後建立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文件,你也會看到設置依賴關係是多麼容易。
此致敬禮, /天使
相關問題
- 1. C Makefile - 如何在構建時添加頭文件(linux內核)?
- 2. 如何從內核源文件簽名內核模塊?
- 3. 構建Linux內核
- 4. 將頭文件添加到Linux內核
- 5. 從多個源文件構建一個內核模塊
- 6. 構建內核模塊針對:無法找到函數的內核頭文件
- 7. 如何構建大型OpenCL內核?
- 8. 構建opencl內核失敗
- 9. OpenCL內核構建錯誤
- 10. 構建內核時make menuconfig
- 11. 未能構建Android內核
- 12. 構建Android內核模塊
- 13. 使用AOSP構建內核
- 14. 如何理解Linux內核模塊的「構建單獨文件」?
- 15. 構建內核爲biackfin目標
- 16. 將新設備添加到FreeBSD內核
- 17. 開關Solr的內核添加文檔
- 18. 爲什麼叫內核的內核?
- 19. Jupyter:如何在新內核
- 20. 程序如何通信 - 微內核單片內核exo內核
- 21. 建築內核
- 22. 何時創建新的solr內核?
- 23. 如何在Tiny Core Linux的擴展文件中添加新的內核模塊?
- 24. 如何在沒有內核源碼樹的情況下構建外部內核模塊
- 25. 如何將新的類或控制器添加到內核中?
- 26. 如何在linux內核的struct page中添加新字段
- 27. 如何註冊OMX內核添加了新的解碼器
- 28. 在Linux內核中爲頭文件添加路徑
- 29. 內核中ping的來源
- 30. 構建Android - 如何在mkbootimg命令中加載內核映像?