理解Makefile中PWD=$(shell pwd):Linux驱动模块Makefile示例与内核源码树
需积分: 14 46 浏览量
更新于2024-09-17
1
收藏 278KB DOCX 举报
在IT领域,特别是驱动模块的Makefile编写中,理解pwd命令和Makefile中使用shell函数的重要性至关重要。`pwd`(Print Working Directory)是一个Linux命令,用于显示当前工作目录的绝对路径。在Makefile中,`PWD=$(shell pwd)`这样的语句被用来动态获取并设置变量`PWD`,确保在执行过程中得到正确的当前目录。这里的关键在于:
1. `$(pwd)`是一个变量引用,表示调用系统的pwd命令并获取其输出。然而,在Makefile中直接使用`$(pwd)`可能不会自动执行该命令,因为它不是预定义的Makefile命令。通过添加`shell`关键字,Makefile指示shell去执行该命令并将其结果赋值给变量。
2. Makefile中的shell函数与反引号`"`功能类似,允许在函数内部执行外部命令。例如,`contents:=$(shell cat foo)`或`files:=$(shell echo *.c)`,这些语句会创建一个新的Shell进程来执行指定的命令,然后将输出作为函数的结果。这在生成变量时非常有用,但需要注意性能问题,因为频繁的shell函数调用可能导致性能下降。
3. 当涉及到Linux设备驱动程序的构建时,针对2.6.x内核,特别是较新的版本,构建模块不再仅仅依赖于内核头文件。由于模块需要与内核源代码中的目标文件进行链接,这就意味着开发者需要在本地环境中配置和构建完整的内核源代码树。内核源代码树(通常称为`kernel source tree`)包含了所有必要的源代码文件,包括内核模块开发所需的组件。
4. 在实际操作中,编译驱动模块时,如在Fedora 14中,Makefile可能会引导你进入特定的内核源码目录,如`/usr/src/kernels/2.6.35.12-88.fc14.i686.PAE`,这是因为编译器需要找到内核源代码才能完成模块的编译和链接过程。
掌握Makefile中使用shell函数获取环境变量如`PWD`,理解shell函数的工作原理以及如何与内核源代码树配合,对于编写驱动模块的Makefile来说是必不可少的技能。同时,理解不同内核版本对驱动模块构建的要求变化也十分重要,确保开发者能正确配置并构建出符合规范的模块。
2021-01-09 上传
2013-11-24 上传
2023-05-27 上传
2023-06-10 上传
2023-06-28 上传
2023-05-27 上传
2023-04-29 上传
2024-10-16 上传
god_yca
- 粉丝: 0
- 资源: 17
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析