- 博客(14)
- 收藏
- 关注
原创 linux Kbuild详解关于if_changed_rule的any-prereq和arg-check原理及info调试
本文分析了Linux内核Kbuild系统中增量编译的实现原理,重点研究了scripts/Makefile.include中的if_changed_rule机制。if_changed_rule通过any-prereq和arg-check两个关键变量判断是否需要重新编译:any-prereq检测依赖文件是否更新或缺失,arg-check比较当前和历史编译命令是否变化。文章详细解析了两个变量的实现细节,包括依赖文件时间戳比较、命令参数处理等,并介绍了如何通过.info宏进行调试。这些机制共同确保了内核构建时只重新
2025-09-04 20:27:44
757
原创 windows系统vbox下ubuntu运行modetest
本文介绍了在Ubuntu 20.04虚拟机环境下编译libdrm源码并通过SSH远程控制DRM显示的过程。首先下载并编译libdrm-2.4.100源码,解决了pciaccess依赖问题。然后在Ubuntu中配置SSH服务,使用Xshell远程登录。通过modetest工具获取DRM信息,识别出vmwgfx设备,并成功将虚拟机显示设置为800x600分辨率。整个过程涵盖了从源码编译到远程显示控制的关键步骤,展示了Linux下图形显示系统的底层操作方法。
2025-09-02 19:56:39
860
原创 kprobe学习记录(insn/aggr/trampoline/XOL/opcode)
本文解析了Linux内核中kprobe机制的核心实现原理。重点分析了kprobe结构体中的三个关键字段:addr(符号地址)、opcode(原始指令备份)和ainsn(动态执行上下文),以及hlist和list分别处理哈希冲突和同地址多探测的功能。同时解释了常见缩写:aggr(聚合)、insn(指令)和XOL(脱机执行)。最后对比了ARM64架构下三种指令探测状态:INSN_REJECTED(不可探测)、INSN_GOOD_NO_SLOT(可探测但无需槽页)和INSN_GOOD(需槽页探测),并总结了各自的
2025-08-31 16:36:53
1334
原创 shell函数function和$(function)调用有区别吗?
Shell函数调用方式有两种:直接调用和使用$()调用并赋值。关键区别在于$()调用会创建子进程,导致变量不共享。通过strace工具跟踪进程执行情况,可以验证$()调用确实会生成新的子进程,而直接调用则不会。例如,当使用$(change)调用函数时,变量修改不会影响父进程中的变量值,而直接调用则会影响。这一差异在Shell脚本编程中需要特别注意,以避免意外的变量作用域问题。
2025-08-29 23:18:53
404
原创 【多目录makefile递归编译示例】【四】makefile疑难知识点(ifdef、伪目标、FORCE、让make停下来、“:=”和“=”区别、$$)
本文总结了Makefile中9个常见问题及解答:1) ifdef判断变量是否定义的条件;2) .PHONY伪目标的正确用法;3) .PHONY不能作为首个目标;4) FORCE伪目标与.PHONY的区别;5) 使make停止的方法;6) ":="和"="赋值的区别;7) makefile与shell命令的区别;8) 解释$$在makefile中的特殊处理;9) shell中$$的含义。通过示例代码详细说明了变量替换、命令执行、目标声明等机制在不同场景下的行为差异,帮助
2025-08-27 10:49:00
748
原创 【多目录makefile递归编译示例】【三】递归逻辑分析
本文通过分析一个多目录递归编译的Makefile示例,揭示了Makefile递归编译的核心机制。文章首先介绍了顶层Makefile的执行流程,详细解析了目标依赖关系、文件生成规则以及子目录的递归调用方式。然后分别剖析了包含子目录和不包含子目录两种情况的目录级Makefile实现,展示了相同的任务拆解模式:将目标拆解为.c文件的目标.o和依赖目录的bi.a。最后重点阐述了递归的秘密在于"dir/bi.a:dir"的设计模式,通过目录作为依赖实现自动化变量传递,确保各级目录行为一致。这种设计
2025-08-26 23:23:15
796
原创 CSDN实用操作(图片位置缩放、字体颜色、链接格式、圆圈内带数字符号、图片清晰处理免费网站、关注博主即可阅读全文设置、文章目录)
本文介绍了CSDN博客编辑的实用技巧,包括:1.图片排版方法(上下/左右排列、位置调整、缩放设置);2.字体颜色设置;3.链接格式规范;4.圆圈数字符号输入;5.图片处理工具推荐;6.设置"粉丝可见"功能;7.自动生成文章目录的方法。通过具体代码示例和效果展示,帮助用户快速掌握CSDN文章的排版技巧,提升博客的可读性和美观度。
2025-08-25 14:22:45
660
原创 【多目录makefile递归编译示例】【二】顶层Makefile/子目录makefile
本文介绍了多目录Makefile递归编译的实现方法。顶层Makefile负责管理整个项目的编译流程,通过make -C命令递归调用子目录的makefile,收集各子目录生成的中间目标文件(如bi.a)。子目录makefile使用ld -r将多个目标文件合并为可重定位的中间文件,而顶层Makefile则通过gcc -o将这些中间文件链接为最终可执行文件。文章详细解析了关键代码行,包括目录遍历、依赖关系定义、变量替换机制等,并提供了清理操作的实现方法。这种分层编译结构使得大型项目的构建更加模块化和可维护。
2025-08-24 21:42:53
841
原创 【多目录makefile递归编译示例】【一】示例简介及执行流程
本文介绍了一个多目录递归Makefile的编译示例,展示了其执行流程和文件结构。示例包含根目录下的Makefile和多个子目录中的makefile,能够自动识别并编译.c文件。通过图示详细说明了编译过程中目录切换、目标文件生成和最终可执行文件test的链接过程。文章还展示了示例代码a.c和m.c的内容,以及程序运行结果"hello m=3 from a"。该示例有助于理解Linux内核编译框架原理,并可方便地扩展支持其他文件类型。
2025-08-24 16:55:09
973
原创 时间不准问题调查(RTC不准?sysclock不准?ntp服务器时钟源不准?)
摘要:UOS系统在联网测试中出现时间快速偏移问题,10分钟快7秒。经排查发现是chronyd服务同步了内部不准确的时间服务器(172.16.104.1)导致。断开网络后时间正常,关闭chronyd服务后问题解决。文章介绍了三种时间同步服务(NTPd、systemd-timesyncd、Chrony)的区别,并分析了系统时间源(系统定时器和RTC硬件时钟)的工作原理。最终通过内核打印确认是chronyd进程调用adjtimex导致时间异常。(149字)
2025-08-22 23:58:21
713
原创 数组为{{}}和{}的ARRAY_SIZE一样吗?记“i2c-3: Can‘t create device at 0x00”查错
摘要: 调试内核时出现"i2c-3: Can't create device at 0x00"错误,经分析发现是由未定义宏导致的空I2C设备数组初始化异常。当使用xx_i2c_devices[] = {{}}形式时,数组长度被识别为1,导致向I2C列表添加了0地址设备;而改为xx_i2c_devices[] = {}后,数组长度正确识别为0,避免了错误地址的注册。通过简化实验验证了不同初始化方式对数组长度的影响,最终通过调整数组初始化方式解决了该问题。
2025-08-20 18:48:25
275
原创 Xshell实用技巧(会话设置、鼠标选中即拷贝右键粘贴、多窗口分屏、日志、串口)
本文介绍了Xshell客户端工具的实用技巧:1)快速创建和复制SSH会话;2)设置鼠标选中即复制、右键粘贴功能;3)实现多窗口分屏操作;4)开启日志记录功能;5)配置串口连接方法;6)提供SSH连接前的网络测试方法。这些技巧能显著提升Xshell的使用效率,特别适合需要管理多台服务器的开发运维人员。
2025-08-16 21:09:09
758
原创 记住5个Source Insight操作快捷键,让你瞬间撸码自如
摘要:本文为Source Insight新手提供核心快捷键指南。重点介绍了5个必备操作:1)Ctrl+左键跳转定义;2)Alt+,/.前进后退;3)F8高亮;4)Ctrl+F局部搜索;5)Ctrl+/全局搜索。补充说明替换(Ctrl+H)、行号跳转(F5)等实用功能,建议通过保存Project Files和Symbol窗口优化界面布局。掌握这些快捷键可显著提升代码浏览和编辑效率,适合快速上手这款经典代码编辑工具。
2025-08-13 11:54:05
1062
原创 如何提取被编译的源文件(提取linux内核源码为例)
本文介绍了两种源码提取工具cce_for_linux_kernel和cce,用于从大型项目中提取实际编译的源代码。cce_for_linux_kernel专为Linux内核开发设计,可通过分析编译依赖关系将内核源码缩减至原大小的1/5,便于学习研究。通用工具cce支持各类C/C++项目,已成功在多个开源软件上测试验证。两种工具都能显著减少代码量,提高代码阅读效率,适用于内核学习、项目快速上手和培训材料制作等场景,帮助开发者聚焦核心代码,提升工作效率。
2025-08-09 22:27:12
787
Linux多张BMP图片显示测试程序
2025-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人