我正在研究一個由多個內核模塊組成的項目。不同模塊之間有一些共享功能,但我不想在每個模塊中包含相同的代碼。 Linux內核有一個「共享對象庫」還是通用代碼進入一個單獨的模塊?分區內核模塊
Q
分區內核模塊
0
A
回答
2
通常,您可以將模塊的通用功能置於單獨的模塊中。其中一個很好的例子是其他SAS(串行連接SCSI)設備驅動程序使用的drivers/scsi/libsas
模塊。如果走這條路線,請參閱Documentation/kbuild/modules.txt
的第6.3節中的內核文檔,以獲取有關從其他外部模塊引用符號的建議。
1
如果您正在尋找一種在模塊之間共享功能的方法,您應該查看一下EXPORT_SYMBOL
宏。一個簡單的例子:
文件super.c
void call_me(){
printk("Hello from super.\n");
}
EXPORT_SYMBOL(call_me);
文件super.h
extern void call_me();
文件base.c
#include "super.h"
void call_super(){
call_me();
}
這裏super.c和base.c是不同的模塊。
如果這是你想要的,請告訴我。我可以向你發送一個更復雜的makefile和東西的例子。希望能幫助到你。
注意:我在很多發行版中都使用過它...但是每次我都需要將Modules.symvers文件複製到其他模塊目錄。
因爲你有一個模塊A和一個模塊B,它使用A中的函數。編譯A時,創建一個名爲Modules.symvers的文件。我需要在編譯之前將該文件複製到B的文件夾中。複製Modules.symvers後,不要在B的文件夾中輸入make clean
,否則它會被刪除。
+0
我已經明白了你的觀點,非常感謝 – amrzar
相關問題
- 1. 內核模塊
- 2. 內核模塊addr2line
- 3. 內核模塊/ proc
- 4. Openwrt內核模塊
- 5. Zlib內核模塊
- 6. 在內核模塊中的劃分
- 7. Linux內核和我的內核模塊
- 8. 「模塊」 在內核模塊的makefile
- 9. Spark:理解分區 - 內核
- 10. 內核模塊警告
- 11. Linux內核模塊編程
- 12. !編譯內核模塊
- 13. FTDI編譯內核模塊
- 14. 內核中的GMP模塊
- 15. Linux內核模塊調試
- 16. Linux內核模塊編譯
- 17. Linux內核模塊ABI(x86)
- 18. 安裝Linux內核模塊
- 19. 從Linux內核模塊
- 20. Android內核模塊編程
- 21. Linux內核模塊配置
- 22. EFAULT從內核模塊
- 23. Linux內核模塊編譯
- 24. 加載Android內核模塊
- 25. 內核模塊的Makefile
- 26. 構建Android內核模塊
- 27. 關於linux內核模塊
- 28. 剖析Linux內核模塊
- 29. 內核makefiel鏈接模塊
- 30. Android和內核模塊
@amrzar 25%是他暗示你更好。 StackOverflow不是因爲它充滿了人們要求學習的問題,而是因爲很多人花時間爲他們寫出了很好的答案。如果你得到了一個好的答案,你應該將其標記爲這樣,否則人們不會認爲值得努力回答並幫助你學習。當你得到一個好的建議時,說「拉你的屁股」這樣的事情可能不是獲得更多幫助的一種非常聰明的方式。 – Fredrik
@Fredrik我認爲,我對單詞「接受」有不同的理解,人們總是問別人的意見,應該尊重他人,但尊重別人的意見_DOES NOT_表示你應該「接受」它!如果我們接受每個人的意見只是爲了「尊重」,那就不會有教派暴力,政黨和這些手的東西!文學表現出對別人工作的尊重,感謝他們寫下甜美的評論並祝願他們成功! – amrzar
@Fredrik看起來你是對的,它的規則和法規的類型爲這個論壇!我現在就這樣做,謝謝你的時間! – amrzar