1.
#如果已定义KERNELRELEASE,则说明是从内核构造系统调用的
#因此可以利用其内建语句
ifneq ($(KERNELRELEASE),)
obj-m := helloworld.o
#否则,是直接从命令行调用的,
#这时要调用内核构造系统
else
# KERNELDIR ?= /lib/modules/$(shell unname -r)/build
KERNELDIR ?= /opt/EmbedSky/linux-2.6.30.4
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
2.helloworld.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
分享到:
相关推荐
单独编译linux 内核某一模块,使用此Makefile只用修改c文件及模块名字
linux内核模块,打印出hello信息,这是模块的基本代码,包括模块入口及出口,以及多文件编译,及模块编译的Makefile模板
1、此Makefile为个人原创,多年来从事Linux驱动开发单独编译驱动的模板Makefile,非常好用; 2、仅供参考
在Linux系统下Makefile和C/C++语言都有提供条件选择编译的语法,就是在编译源码的时候,可以选择性地编译指定的代码。这种条件选择编译的使用场合有好多,例如我们开发一个兼容标准版本与定制版本兼容的项目,那么,...
linux设备驱动makefile:2.4内核模块Makefile模板 #Makefile for linux2.4 KVER=$(shell uname -r) KDIR=/lib/modules/$(KVER)/build OBJS=mymodule.o CFLAGS=-D__KERNEL__ -I$(KDIR) /include -DMODULE
该模板还可用于提交其他模块。 有关更多信息,请访问: 快速开始 如果您不想使用git,只需下载: 推荐的LaTeX环境 离线:可使用拼写检查。 请以查看器的形式下载并连接两者。 注意有关配置的信息。 用于管理您的文学...
- Makefile.am - UNIX/Linux的makefile模板 - Makefile.common - 包含了插件文件的名称 - Makefile.nmake - 包含了针对Windows平台的Wireshark插件makefile - moduleinfo.h - 包含了插件版本信息 - moduleinfo.nmake...
Go 应用模板构建环境 这是一个 Go 应用程序的骨架项目,它捕捉了我迄今为止学到的最好的构建技术。 它使用 Makefile 来驱动构建(软件项目的通用 API)和 Dockerfile 来构建 docker 镜像。 这仅在 Linux 上测试过...
GoLang + Docker + Google Cloud Run模板存储库基本发展使用您喜欢的GoLang模块名称make init NAME=github.com/ashishb/golang-template-repo ,例如, make init NAME=github.com/ashishb/golang-template-repo 在...
由于MySQL的C库不同版本有所区别,所以出错需要自行排查兼容性原因,或者直接屏蔽MySQL相关代码(屏蔽MySQL和Redis模块方法:屏蔽Makefile里面链接相关动态库的代码,然后将src/version.h文件里的MYSQL_ENABLE和...
大多数 Linux(通常和类 POSIX)源代码软件包使用 autoconf 脚本来检查构建环境, 所以您必需运行 configure 命令,该命令在编译之前创建“Makefile”。CDT 没有提供编辑 autoconf 脚本的方法,所以必需手工编写...
makefile.in 第46章 使用c语言编写tk组件 初始化扩展模块 组件的数据结构 组件的类命令 组件实例命令 配置和重新配置属性 指定组件属性 时钟的显示 窗口事件过程 最后的清除工作 第47章 c函数库概览 ...
她利用模板原编程技术实现.这意味着,你不需要额外的预处理过程去编译你的工程(编译器 会替你完成全部的工作).这还意味着,你也不需要(通常)知道你注册的每一个函数的精确的签名. 因为,LuaBind库会在编译时生成所需的...