我想爲android製作一個動態加載的內核模塊。 我不想安裝一個linux,我只是有cygwin和android NDK。android NDK可以編譯內核模塊的源碼嗎?
回答
按照這個URL,Android開發人員建議爲這個虛擬Ubuntu鏡像比cygwin。
是的,可以使用NDK構建內核模塊。請注意,這對於Linux系統(我被告知Linux x86_64是支持的環境)效果最好,因爲交叉編譯區分大小寫的文件系統上的內核代碼(例如Windows和Mac系統上默認出現的代碼)很難,因爲構建內核模塊需要構建ELF操作二進制文件(modpost),這些二進制文件通常只在Linux上存在,這需要ELF頭文件。 這就是說...
首先,您需要將源代碼獲取到設備上相同的內核,並確保配置與您的設備相同。 (否則有可能會混淆構建系統)
其次,您需要確定交叉編譯器工具鏈在Android NDK中的位置。以下是我找到了我:
$ cd $NDK_HOME
$ find . | grep '\-gcc$'
./toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi-gcc
./toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
(注意,$NDK_HOME
是我安裝了Android NDK)
第三,你需要添加$NDK_HOME/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin
目錄(或者是任何一個是你的系統)到您的PATH環境變量。
然後,你需要導出兩個環境變量:
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
(注意,該arm-eabi-
前綴是一樣的就是我們在find
命令當內核是建立看到,命令如gcc
和ld
注意,如果你正在構建一個x86平臺,我期望你將不得不調整這些,我只爲ARM構建了模塊。)
接下來,你應該編譯內核。 (爲此,我從我的Android設備上拉下了/proc/config.gz
,在內核源代碼目錄中運行zcat config.gz > .config
,然後運行make menuconfig && make
。)內核構建大師在這裏可能會知道一些快捷方式,但我無法正確設置內核源代碼目錄用於構建模塊而不進行實際構建。 (如果您的構建樹中的內核與您的設備匹配,則不必實際更新內核,只需插入模塊。)
最後,我使用正常流程從源代碼構建內核模塊。通常,內核模塊將具有參數化版本,該版本將以某種方式讀入內核源碼樹目錄,然後調用版本。此時,只要內核源代碼樹設置正確,並且設置了ARCH
和CROSS_COMPILE
,則應該創建模塊!
祝你好運。我確定每個設備都有一些差異。
- 1. 哪裏可以編譯新的內核模塊代碼
- 2. !編譯內核模塊
- 3. Linux內核模塊編譯
- 4. Linux內核模塊編譯
- 5. Android內核模塊編程
- 6. 編譯我的Ubuntu 10.04內核模塊時可以使用-fstack-check嗎?
- 7. 內核模塊可以使用內核數據結構嗎?
- 8. 如何根據新的源編譯內核模塊
- 9. 編譯Linux內核模塊(lincan)
- 10. 如何編譯Linux內核模塊
- 11. 問題編譯內核模塊
- 12. 我可以在不重新編譯整個內核的情況下使用gcov作爲內核模塊嗎?
- 13. 編譯android內核
- 14. 其他內核的Linux內核模塊開發編譯
- 15. 用很多源文件編譯外部內核模塊
- 16. 在android ndk編譯fftw3 ndk
- 17. 使用gcc與內核頭文件編譯Linux內核模塊
- 18. 編譯android 3.10內核源碼時出錯
- 19. Android NDK不編譯
- 20. 爲mips編譯android內核
- 21. 我們可以看到Windows 7的內核源代碼嗎?
- 22. 代碼不會與Android NDK編譯
- 23. Linux內核模塊編程
- 24. 的Android NDK編譯GMP庫
- 25. Android內核源代碼
- 26. Android和內核模塊
- 27. 構建Android內核模塊
- 28. 我們可以查看runtime.js的未編譯JavaScript源代碼嗎?
- 29. 我可以使用模塊替換Linux內核函數嗎?
- 30. 我可以在Linux內核模塊中使用strtok()嗎?
由於linux沒有內核ABI,因此您必須將模塊編譯到每個單獨的內核。 。 – lovespring 2011-02-05 15:26:00
我可以在固定電話的應用程序中加載LKM,以干擾系統調用。有任何想法嗎? – DroidBot 2013-01-18 09:14:57