2014-05-18 84 views
0

在Linux中,許多驅動程序(以及某些部分)可以直接在內核或模塊中編譯。將驅動程序(或某些部分)編譯爲模塊並直接編譯它有什麼區別?他們似乎以任何方式工作。另外,將它編譯爲模塊還是直接編譯有一些優點和缺點linux kernel:module或built-in有什麼區別?

回答

1

如果在Linux內核中編譯了某些東西,它將永遠成爲二進制文件的一部分。因此,它不會在「根據需要」的基礎上加載到內核中。所以,舉個例子,假設你的機器上有一個realtek以太網卡,爲什麼你需要intel網卡的驅動程序?

另一件事是,內核模塊通常不能在內核中引用函數,除非它被導出到使用EXPORT_SYMBOL及其變體的模塊中。因此,如果你的驅動程序需要引用內核源代碼中的函數(反正不應該這樣),那麼你必須將你的驅動程序加入到內核源代碼樹中。