驅動程式 編譯進核心和編譯成模組

2021-10-04 07:27:50 字數 883 閱讀 5182

在 核心中增加程式需要完成以下五項工作:

1. 將編寫的源**複製到 linux 核心源**的相應目錄;

2. 在目錄的 kconfig 檔案中增加新源**對應專案的編譯配置選項;

3. 在目錄的 makefile 檔案中增加對新源**的編譯條目。

4.在該目錄的上一級目錄的kconfig檔案中把上面第二步修改的kconfig包括到此kconfig中。

5.在該目錄的上一級makefile中修改下,使得可以編譯到該目錄。

1.核心編譯命令(makefile)

obj-y:把由foo.c 或者 foo.s 檔案編譯得到foo.o 並連線進核心.

obj-m: 則表示該檔案作為模組編譯.

除了y、m以外的obj-x 形式的目標都不會被編譯。

2.核心編譯 (make menuconfig)

make   menuconfig

*標識編譯到核心,

m標識作為核心模組編譯.

空格,表示該功能不編譯到核心中,即新的核心將不支援該功能.

驅動被編譯成  .ko 檔案並insmode。

驅動邊編譯成  .ko 檔案。

例如:makefil中有一句

obj-$(config_hello_world) += hello.o

makemenuconfig 中 config_hello_world  配置為 * 。那麼config_hello_world=y

makefile在執行的時候就是

obj-y += hello.o

就是編譯進核心。

Linux 驅動不固化,編譯成模組

需求,除錯usb gadget一直存在問題,想按照網上的例子,以模組載入的形式來試一下,所以想把預設的usb配置全部刪除,順便把沒有用到的sound等無用的裝置驅動一併刪除 1.對defconfig刪減了一通,刪除了usb所有的模組等,使用的開發板 通過命令 cat lib modules unam...

kbuild系統 編譯到核心和編譯成模組的區別

編譯到核心和編譯成模組在 中有什麼區別呢?從模組的 中看是一樣的。入口函式都是module init fun 但是 中的條件編譯會使巨集module init 在編譯到核心和編譯成模組的情況下替換成不同的 include linux init.h中可知 ifndef module define mo...

kbuild系統 編譯到核心和編譯成模組的區別

編譯到核心和編譯成模組在 中有什麼區別呢?從模組的 中看是一樣的。入口函式都是module init fun 但是 中的條件編譯會使巨集module init 在編譯到核心和編譯成模組的情況下替換成不同的 include linux init.h中可知 ifndef module define mo...