簡體   English   中英

如何在android自定義內核中構建Helloword

[英]How to build Helloword in android custom kernel

insmod: failed to load hello.ko: Function not implemented during kernel build to logout message like 'hello world',我遇到了這樣的錯誤,以下步驟將重現該錯誤:

1)我從git clone https://android.googlesource.com/kernel/goldfish/ -b android-goldfish-3.18下載了金魚內核

2)還使用git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9下載了上述 repo 附帶的工具鏈

3)我將目錄更改為金魚並創建了文檔( github )中提到的路徑

4)然后我嘗試使用這個sudo make ARCH=x86_64 CROSS_COMPILE=/home/ana/x86_64-linux-android-4.9-nougat-dev/bin/x86_64-linux-android-在內核目錄(金魚)中sudo make ARCH=x86_64 CROSS_COMPILE=/home/ana/x86_64-linux-android-4.9-nougat-dev/bin/x86_64-linux-android-內核並設置 LOADABLE_MODULES=y

5)下一步,我在helloKernel目錄下創建了hello.c文件和與之相關的Makefile。

你好ç

#include<linux/module.h>
#include<linux/init.h>
#include<linux/kernel.h>

MODULE_AUTHOR("Robert P. J. Day");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_VERSION("2:1.0") ;
MODULE_DESCRIPTION("You have to start somewhere.");


static int hello_init(void){
    printk(KERN_ALERT "Hello TheLittleNaruto it’s your first driver.\n");
return 0;
}

static void hello_exit(void){
    printk(KERN_INFO "Goodbye TheLittleNaruto No point in keeping this driv er running.\n");
}

module_init(hello_init);
module_exit(hello_exit);

生成文件

obj-m := hello.o  

KERNELDIR := /home/ana/goldfish/
PWD :=$(shell pwd)  
ARCH=x86_64 
CROSS_COMPILE=/home/ana/x86_64-linux-android-4.9-nougat-dev/bin/x86_64-linux-android-
CC=$(CROSS_COMPILE)gcc  
LD=$(CROSS_COMPILE)ld  
CFLAGS_MODULE=-fno-pic  

modules:  
    make -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) modules    
clean:    
    rm *.o *.ko *.mod.c *.order *.symvers
  1. 在同一個目錄中,我用這個sudo make ARCH=x86_64 CROSS_COMPILE=/home/ana/x86_64-linux-android-4.9-nougat-dev/bin/x86_64-linux-android-

7)然后我使用sudo adb push hello.ko /data/local復制到 android 模擬器

8)然后我在/data/local嘗試insmod hello.ko

我得到了上述錯誤,請幫我解決這個問題。 提前致謝

兩件事要添加到你的代碼中

  • 函數進出例程module_init(init_module); 模塊退出(清理模塊);
  • 讓 init_module 函數返回 0 而不是 1,因為 0 意味着我們很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM