关于内核编程的一些笔记

一 引言

在进行linux内核编程时,有一些心得,记录一下。

二 内核编程遇到的问题

  • 内存管理复杂。
  • 调试麻烦,不能很好的定位到错误。
  • 不同的内核,类型定义不同,如指针的长度是4字节还是8字节。
  • 跨平台移植,需要在不同平台下实现内容,如文件、库载入等。

三 相关技巧

1 内核中查看符号表是否存在

复制代码
cat /proc/kallsyms | grep filp_open

filp_open,是具体的函数名,根据需要替换。

2 内核函数符号表导出

复制代码
EXPORT_SYMBOL(AddFunction);

3 设置串口主动输出

复制代码
echo 8 > /proc/sys/kernel/printk

但是,该命令写到/root/rc.local中不好用,不知为何。

4 使用objdump反汇编

使用如下命令:

复制代码
aarch64-linux-gnu-objdump -S XXX.ko > XXX

可以将ko文件反汇编,其中-S是包含源代码。

三 错误解决

1 丢失modinfo

现象如下:

复制代码
missing .modinfo section): module has no symbols (stripped?)

可以通过modinfo命令查看模块信息。

四 小结

以上为笔记,并不成体系。但是通常我会及时记录,慢慢的就成体系了。

相关推荐
Lintongzg4 小时前
千卡训练的隐形账单:通信不是瓶颈
笔记·学习·性能优化·llm
LuminousCPP4 小时前
从零开始学 C++(三):类和对象入门|从 struct 到 class,理解封装、对象与 this 指针
c++·笔记·学习·类和对象
GeW4 小时前
从代码到共识:技术突围如何映照大国相处之道
linux
承渊政道5 小时前
Linux系统学习【进程信号详细解析——认识、产生、保存以及捕捉信号】
linux·学习·ubuntu·ssh·vs code·进程信号
硅基手札5 小时前
【linux内核专栏01】Linux 内核心智模型与设计哲学
linux·运维·驱动开发·开源软件
码完就睡6 小时前
Linux——socket网络编程
linux·运维·网络
道尔柯南6 小时前
【Linux】网络基础概念
linux·运维·网络
2601_957883846 小时前
2026年9月:戴尔笔记本售后情况大揭秘
笔记
傲世仙尊6 小时前
从抢票事故到锁的原理-互斥条件变量与生产消费模型
linux·驱动开发
AI+程序员在路上6 小时前
AP6275S蓝牙双接口解析:HCI UART与PCM的分工与协同
linux·c语言·物联网