关于内核编程的一些笔记

一 引言

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

四 小结

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

相关推荐
生信大表哥13 小时前
bulk RNA-Seq (4)合并表达矩阵
linux·生信·数信院生信服务器
DeeplyMind15 小时前
虚拟化hypervisor:Xen简介
linux·virtualization·xen
Vince丶15 小时前
“伪”局域网
笔记
adnyting15 小时前
【Linux日新月异(二)】CentOS 7用户与用户组管理深度指南:保障系统安全的基石
linux·运维·centos
渡我白衣15 小时前
深入理解 OverlayFS:用分层的方式重新组织 Linux 文件系统
android·java·linux·运维·服务器·开发语言·人工智能
waves浪游15 小时前
进程概念(上)
linux·运维·服务器·开发语言·c++
johnny23316 小时前
编辑器和笔记软件汇总(三):NotebookLM、note-gen、MiaoYan、LetsMarkdown、DocFlow
笔记
不会kao代码的小王16 小时前
从局域网到全网可用!PDFMathTranslate 翻译工具的进阶使用法
linux
Myosotis51316 小时前
DNS练习
linux·运维·服务器
虫洞没有虫16 小时前
Go语言学习笔记(一)
笔记·go·区块链