RK3399平台开发系列讲解(内核入门篇)内核模块符号的导出

embedded/2024/9/25 7:25:20/

在这里插入图片描述

🚀返回专栏总目录

文章目录

  • 一、为啥需要导出符号
  • 二、符号表
  • 三、内核模块符号导出
  • 四、案例

沉淀、分享、成长,让自己和他人都能有所收获!😄

📢这里的符号主要指的是全局变量和函数。

一、为啥需要导出符号


Linux 内核采用的是以模块化形式管理内核代码。内核中的每个模块相互之间是相互独立的,也就是说A模块的全局变量和函数,B模块是无法访问的。

有些时候,我们写一些模块代码的时候,发现部分函数功能别人已经实现了,此时我们就想如果我们可以调用他们已经实现好的函数接口就好了。那如何才能做到这点呢? 符号导出了,也就是说你可以把你实现的函数接口和全局变量导出,以供其他模块使用。

在Linux 内核的世界里,如果一个模块已经以静态的方式编译进的内核,那么它导出的符号就会出现在全局的内核符号表中。在Ubuntu 18.04系统中,Linux 内核的全局符号表在Module.symvers文件中存放。

二、符号表


该文件是一个符号表,包含了内核的所有全局变量和函数在内存中的地址。
这是一个帮助内核开发者调试内核而加入的文件,在 Linux 系统崩溃时产生的 Opps 信息中,函数调用堆栈中显示出来的函数名,就是在这个文件


http://www.ppmy.cn/embedded/94278.html

相关文章

[C++] 深入理解面向对象编程特性 : 继承

文章目录 继承的概念与定义继承的定义定义格式不同继承方式与继承的基类中访问限定符间的影响C中的继承和访问控制总结父类的private成员在子类中的访问限制protected成员的使用场景成员访问方式总结继承方式的默认值实际应用中的继承方式 示例代码 OOP中类之间的关系“is a” …

ComfyUI - 配置 AIGC 绘画的 ComfyUI 工具

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/141140498 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 ComfyU…

食品龙头数字化:Fortinet平台化方案筑牢安全防线

在数字化转型征途中,某食品龙头企业直面多重网络安全挑战。物联网等数据洪流汹涌而至,对其防御体系构成严峻考验。全球化业务的广泛拓展,使数据流动与远程访问的安全性成为焦点问题。同时,内部网络结构的复杂化及线上线下业务的深…

【Impala】学习笔记

Impala学习笔记 【一】Impala介绍【1】简介(1)简介(2)优点(3)缺点 【2】架构(1)Impalad(守护进程)(2)Statestore(存储状态…

开源免费前端地图开发组件xdh-map

xdh-map是一个基于Openlayers的地图应用Vue组件,具有多方面的功能和特点。以下是对xdh-map的详细介绍: 一、功能与特性 内置多种地图瓦片:xdh-map内置了百度、高德、天地图等地图瓦片,使得开发者可以方便地在应用中集成多种地图…

培训第二十四天(python基础学习)

上午 python开发工具: 1、安装自带的ide 2、pycharm(付费) 3、anaconda 1、环境 python2内置,需要换为python3 [root3 ~]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ some-package //切换国内下载[root3 ~]# yum lis…

Oracle: oracle大小写敏感问题

oracle大小写敏感含义:比如创建表A和a,A和a是两个不同的表(表名不同)。 oracle大小写不敏感含义:比如创建了A表就不能创建a表,将A和a看成是相同的表(表名相同)。 1、查询用户是否存…

Centos7如何更换yum源

Centos7默认的yum源是国外的,所以我们使用的时候就很慢,有时候甚至还会下载失败,所以我们要选择更换yum源(我用的是阿里云的) 备份原有的 YUM 源配置文件: sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc…