V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
capturepointer
V2EX  ›  Android

来此请教一个 android 的驱动 hello world 报错信息

  •  
  •   capturepointer · 2017-06-18 18:43:34 +08:00 · 9387 次点击
    这是一个创建于 2715 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我自己不是弄 android 的,但是写了一个 hello world 的驱动程序,始终无法解决问题,我先上代码:

    #include <linux/init.h>
    
    #include <linux/kernel.h>
    
    #include <linux/module.h>
    
    #include <linux/slab.h>
    
    MODULE_LICENSE("Dual BSD/GPL");
    
    int dev[8];
    
    static int __init hello_init(void) {
    
    int i;
    
    for (i = 0; i < 8; i++){
    
    	dev[i] = kzalloc(sizeof(*dev[i]), GFP_KERNEL);
    
    }
        pr_info(KERN_EMERG  "Hello world!\n");
    
    return 0;
    
    }
    
    static void __exit hello_exit(void) {
    
    printk(KERN_EMERG  "Hello exit!\n");
    
    }
    
    module_init(hello_init);
    
    module_exit(hello_exit);
    

    我在 ubuntu 下面交叉编译后,是给华为 P8 手机编译的,通过 adb push 到华为手机上面,然后使用

    insmod hello.ko
    

    提示我安装失败,我使用 dmesg 查看日志信息,看到如下提示:

    insmod module hello: unsupported RELA relocation: 311
    

    我只知道是因为

    kzalloc(sizeof(*dev[i]), GFP_KERNEL); 
    

    这句话引起的,但是不明白为什么,另外 P8 手机是 64 位的,请各位大神指点下呢!

    4 条回复    2017-06-18 19:40:33 +08:00
    21grams
        1
    21grams  
       2017-06-18 18:46:49 +08:00
    编译参数加上-fno-pic
    capturepointer
        2
    capturepointer  
    OP
       2017-06-18 18:53:11 +08:00
    @21grams 我是这样编译的,就是不知道应该怎么添加:

    sudo make modules M=../../hello ARCH=arm64 CROSS_COMPILE=~/toolchain/aarch64-linux-android-4.9/bin/aarch64-linux-android-

    是在 linux 内核的目录下执行的!
    21grams
        3
    21grams  
       2017-06-18 19:10:59 +08:00
    @capturepointer #2 make CFLAGS_MODULE=-fno-pic
    capturepointer
        4
    capturepointer  
    OP
       2017-06-18 19:40:33 +08:00
    @21grams 搞定了,谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2747 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.