关于内核编程的一些笔记

一 引言

在进行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命令查看模块信息。

四 小结

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

相关推荐
鹤落晴春7 小时前
RH124问答3:从命令行管理文件
linux·运维·服务器
凡人叶枫7 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
Net_Walke8 小时前
【Linux系统】静态链接库与动态链接库
linux·嵌入式硬件
syc78901239 小时前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
凡人叶枫9 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
袁小皮皮不皮10 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip
vsropy11 小时前
Ubuntu网络图标消失问题/有网络问号
linux·运维·ubuntu
coderwu11 小时前
Ubuntu 24.04 终端输入 openclaw config 提示未找到命令解决办法
linux·运维·ubuntu
凡人叶枫13 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发
AI帮小忙13 小时前
Debian系linux操作系统里安装OpenClaw
linux·运维·debian