[英]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
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
我得到了上述錯誤,請幫我解決這個問題。 提前致謝
兩件事要添加到你的代碼中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.