linux驱动-关于简单内核模块Makefile文件???

问题描述

关于简单内核模块Makefile文件???

ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
rm -rf .o *~ core .depend ..cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean
else
obj-m := globalmem.o
endif

ifeq ($(KERNELRELEASE),)这一句执行之后,else便不会再执行,但是为什么else还能起作用呢???

是这样的
ifeq...else...endif
也就是说,ifeq满足条件,那么就会执行下面的语句,而else就不会被执行了,否则执行else
也就是说他们两个只有一个会起作用,但是我发现他们两个都起作用了,改任何一个都会报错,为什么???

解决方案

@ Drifter011 ,对对,就是这里不明白。按照代码分析——这句应该不起作用啊~~~但是按照逻辑分析——这句话应该起作用。就是这里不太明白
不知道代码怎么执行的???

解决方案二:

你的问题不清楚,“else便不会再执行,但是为什么else还能起作用呢???”是什么意思?

解决方案三:

哦,是这样的
ifeq...else...endif
也就是说,ifeq满足条件,那么就会执行下面的语句,而else就不会被执行了,否则执行else
也就是说他们两个只有一个会起作用,但是我发现他们两个都起作用了,改任何一个都会报错,为什么???

解决方案四:

是不是后面还有类似obj-m := globalmem.o的语句在起作用

时间: 2024-09-12 17:09:30

linux驱动-关于简单内核模块Makefile文件???的相关文章

Python实现生成简单的Makefile文件代码示例_python

在linux下写几个测试程序,还要一行行的输入g++命令进行编译,当经常改测试代码的时候,那一次次的敲(或者一次次的上线箭头选)也感觉不爽,不如make来的快.用Makefile的好处就不用多说了,这里我写了个脚本,其功能是自动搜索当前目录(不包括子目录)下的".c"文件生成Makefile文件. 代码在这里,功能有限(适用于单个文件是一个独立的测试代码的情况),需要的朋友可以稍作修改以满足需求. 复制代码 代码如下: #! /usr/bin/python '''  File     

《Android深度探索(卷1):HAL与驱动开发》——6.3节第一个Linux驱动:统计单词个数

6.3 第一个Linux驱动:统计单词个数Android深度探索(卷1):HAL与驱动开发源程序目录:<光盘根目录>/sources/word_count本节将给出我们的第1个Linux驱动的例子.这个驱动程序并没有访问硬件,而是利用设备文件作为介质与应用程序进行交互.应用程序通过向设备文件传递一个由空格分隔的字符串(每一个被空格隔开的子字符串称为一个单词),然后从设备文件读出来的是该字符串包含的单词数.本例的驱动程序使用C语言实现,源代码文件路径如下. 6.3.1 编写Linux驱动程序前的

让你提前认识软件开发(17):makefile文件的书写及应用

第1部分 重新认识C语言 makefile文件的书写及应用   [文章摘要]         makefile用于Linux下整个工程的编译,对于Linux下的C/C++语言的编译是至关重要的.        本文以实际的C源程序为例子,介绍如何使用makefile来编译Linux下的C语言工程,为相关开发工作的开展提供了参考.   [关键词]         makefile  C语言  Linux  编译  开发   一.什么是makefile?         makefile是什么?如果

从简入难makefile文件编写,Linux C++编程,简单vi命令

 1.一个最基本的C++程序 2.第二个c++程序 3.第一个入门级别的简单的makefile 4.在makefile中定义变量. 5.编写makefile的依赖 如果start:标识后面的某个.o没有,则重新编译没有编译的那个文件 6.最终的makefile文件 总结:makefile是通过.o文件是否存在已经.cpp最后的修改时间来判断是否重新编译.o文件. 7.makefile不管理.h文件,它是编译器来进行管理的.     vi: i在光标之前插入 a在光标后面插入 x删除后面的字符

【Linux驱动】linux内核模块简介

一. 摘要 这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程.主要从模块开发中的常用指令.内核模块程序的结构.模块使用计数以及模块的编译等角度对内核模块进行介绍.在Linux系统开发过程中,以模块的形式开发其重要性不言自明,而在嵌入式设备驱动开发中将驱动程序以模块的形式发布,更是极大地提高了设备使用的灵活性--用户只需要拿到相关驱动模块,再插入到用户的内核中,即可灵活地使用你的设备. 二. 文章提纲 1. 摘要 2. 文章提纲 3. 概述 4. 模块开发常用的指令 5. 内

linux驱动开发--字符设备:简单的file_operations示例

字符设备结构struct cdev 内核使用该结构来表示一个字符设备,在<linux/cdev.h>中定义. 重要成员: struct kobject kobj;//设备对象 struct module *owner;//该设备的拥有者驱动模块 struct file_operations *ops;//设备操作集合 struct list_head list;//内核维护的字符设备链表成员 dev_t dev;//字符设备号 unsigned int count;//设备个数 文件结构 st

Linux内核分析(二)----内核模块简介|简单内核模块实现

原文:Linux内核分析(二)----内核模块简介|简单内核模块实现 Linux内核分析(二) 昨天我们开始了内核的分析,网上有很多人是用用源码直接分析,这样造成的问题是,大家觉得很枯燥很难理解,从某种意义上来说linux系统本身就是由一个个模块构成的,所以我会结合内核模块的设计,去分析内核,从而达到对linux内核的理解. 今天我们会分析到以下内容: 1.      Linux内核模块简介 2.      简单内核模块实现   l  Linux内核模块简介 1.       何为内核模块 在上

超简单易用的 “在 pcduino 开发板上写 Linux 驱动控制板载 LED 的闪烁”

这里转载一篇 linux 下的驱动程序开发的很基础和有用的文章 在pcduino开发板上写驱动控制板载LED的闪烁 ,实际是一个linux的驱动,该篇文章基础且够用:后续找到 android 下的驱动开发相关文章,再补充进来,希望该文作者能再接再励,感谢于先. 这里用 原创 模式,以便能推荐给更多的爱好者,转载是无法推荐的,敬请谅解. 以下仅是对原作者文章的整版复制,由于工作较忙,尚无时间细整理其中的代码,急用的可通过上面的链接跳转至原作者博客.      由于关于pcduino的资料比较少,所

linux makefile文件

Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作.而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系.makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已. makefile文件主要包含了5个主要内容:显示规则.隐式规则.变量定义.文