明远智睿技术论坛

标题: 尝试编译一个简单的hello模块,成功,记录一下 [打印本页]

作者: 钟宇泉    时间: 2020-4-21 19:46
标题: 尝试编译一个简单的hello模块,成功,记录一下
本帖最后由 钟宇泉 于 2020-4-22 11:00 编辑

Makefile  如下
ifneq ($(KERNELRELEASE),)

obj-m := hello.o

else
KDIR :=/home/linkorTech/my-work/03_toolchain/fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0
all:
        make -C $(KDIR) M=$(PWD) modules ARCH=armCROSS_COMPILE=environment-setup-cortexa7hf-neon-poky-linux-
clean:
        rm -f *.ko *.o *.mod.o *.mod.c *.symvers

endif



hello.c如下
#include <linux/kernel.h>
#include <linux/module.h>

static int __init module_init(void)
{
         printk("Hello,  module is installed !\n");
         return 0;
}

static void __exit module_cleanup(void)
{
        printk("Good-bye,  module was removed!\n");
}

module_init(module_init);
module_exit(module_cleanup);
MODULE_LICENSE("GPL");


我这个makefile是哪错了么,希望可以指导一下,系统编译方面还是一个新手。


作者: 钟宇泉    时间: 2020-4-22 11:00
在群里的帮助下编译成功了,感谢MYZR林远楠和MYZR张附上hello.c

#include <linux/module.h> //所有模块都需要的头文件
#include <linux/init.h> // init&exit相关宏
static int __init hello_init (void)
{
    printk("Hello china init/n");
    return 0;
}

static void __exit hello_exit (void)
{
    printk("Hello china exit/n");
}

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");


附上 MAKEFILE
ifneq ($(KERNELRELEASE),)
obj-m += hello.o
else
        KERNELDIR:=/home/linkorTech/my-work/02_Source/linux-4.1.15
all:
        make -C $(KERNELDIR) M=$(PWD) modules
clean:
        rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif

[attach]710[/attach]


环境变量设置好,ARCH和CROSS_COMPILE不用设置,交叉编译工具的脚本默认就设置好ARCH和CROSS_COMPILE

作者: myzr_soft    时间: 2020-4-22 11:17
请各位悉知编译驱动模块前,确保linux系统已经编译过并生成过Image或者zImage,
驱动编译也可以参考http://bbs.myzr.com.cn/forum.php ... &extra=page%3D1
作者: 钟宇泉    时间: 2020-4-22 11:52
myzr_soft 发表于 2020-4-22 11:17
请各位悉知编译驱动模块前,确保linux系统已经编译过并生成过Image或者zImage,
驱动编译也可以参考http:// ...

收到!!!!!




欢迎光临 明远智睿技术论坛 (http://bbs.myzr.com.cn/) Powered by Discuz! X3.2