钟宇泉 发表于 2020-4-21 19:46:00

尝试编译一个简单的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是哪错了么,希望可以指导一下,系统编译方面还是一个新手。

myzr_soft 发表于 2020-4-22 11:17:52

请各位悉知编译驱动模块前,确保linux系统已经编译过并生成过Image或者zImage,
驱动编译也可以参考http://bbs.myzr.com.cn/forum.php?mod=viewthread&tid=1161&extra=page%3D1

钟宇泉 发表于 2020-4-22 11:00:18

在群里的帮助下编译成功了,感谢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




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

钟宇泉 发表于 2020-4-22 11:52:00

myzr_soft 发表于 2020-4-22 11:17
请各位悉知编译驱动模块前,确保linux系统已经编译过并生成过Image或者zImage,
驱动编译也可以参考http:// ...

收到!!!!!
页: [1]
查看完整版本: 尝试编译一个简单的hello模块,成功,记录一下