Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

news2024/11/15 14:00:31

为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。


一、下载对应的内核源码

首先要通过 uname -a查询一下自己的内核版本。
在这里插入图片描述
我这里下载的是

https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz

在这里插入图片描述

二、编译内核

(1)编译依赖安装:

sudo apt-get install libncurses-dev
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install libelf-dev

否则会出现以下问题:
libncurses-dev引起:

  HOSTCC  scripts/basic/fixdep
*
* Unable to find the ncurses package.
* Install ncurses (ncurses-devel or libncurses-dev
* depending on your distribution).
*
scripts/kconfig/Makefile:208: recipe for target 'scripts/kconfig/mconf-cfg' failed
make[1]: *** [scripts/kconfig/mconf-cfg] Error 1
Makefile:567: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2

flex: not found 引起:

/bin/sh: 1: flex: not found
scripts/Makefile.host:9: recipe for target 'scripts/kconfig/lexer.lex.c' failed
make[1]: *** [scripts/kconfig/lexer.lex.c] Error 127
Makefile:567: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2

bison: not found引起:

/bin/sh: 1: bison: not found
scripts/Makefile.host:17: recipe for target 'scripts/kconfig/parser.tab.h' failed
make[1]: *** [scripts/kconfig/parser.tab.h] Error 127
Makefile:567: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2

libelf-dev引起:

  CALL    scripts/checksyscalls.sh
  CALL    scripts/atomic/check-atomics.sh
warning: Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel
  CHK     include/generated/compile.h

(2)问题解决:

问题1:
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.
Makefile:1652: recipe for target 'certs' failed
make: *** [certs] Error 2

解决:
通过 make menuconfig 配置删除 SYSTEM_TRUSTED_KEYS 的参数 debian/canonical-certs.pem

(3)清理及编译内核:

#清除编译过程中产生的所有中间文件
make mrproper
#清除上一次产生的编译中间文件
make distclean
#出现选择的图形化界面后,对内和编译选项进行配置,如果没有修改默认save生成.config即可
make menuconfig
#编译,这里用8线程进行编译
make -j8
#编译内核镜像
make bzImage

三、驱动编写及验证

(1)编写驱动程序以及Makefile:

参考:Linux驱动之简单入门——学习笔记(1)

(2)查看结果

开个端口实时查看内核输出:

sudo cat /proc/kmsg

通过insmod、rmmod等函数对编译出来的.ko文件进行加载及卸载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一起学 WebGL:复合矩阵

大家好,我是前端西瓜哥。之前讲了平移矩阵、旋转矩阵以及缩放矩阵,以及演示了在 WebGL 中的单独应用的效果。 这次我们看看同时进行多次矩阵变换的组合写法。 我们将会对一个三角形先平移,然后旋转。 矩阵乘法 简单过一下矩阵乘法的知识点…

Cassandra windos安装

首先从http://cassandra.apache.org/download/网站上找到cassandra,如下图所示: 2、点击3.11.3跳转到下载地址,如下图所示: …

DHCP服务器 DNS服务器 综合实验

配置DNS服务器 DNS服务器 主域服务器host1 192.168.80.101 从域服务器host2 192.168.80.102 DHCP服务器 host1 192.168.80.101 提供192.168.80.0/24网段 IP地址、默认网关、子网掩码、DNS服务器地址、DNS默认域名 客户端 Linux host3 19…

数据可视化神器!Matplotlib Python教程 | 从入门到精通绘制各种类型的图形和保存图形

大家好,我是爱吃熊掌的鱼,今天我要给大家带来一篇有趣开朗的Matplotlib Python教程。Matplotlib是Python中最流行的数据可视化库之一,它可以帮助我们将数据转化为易于理解的图表和图形。无论你是初学者还是专业人士,Matplotlib都是…

Eureka 注册中心——服务的注册与发现

文章目录 1.Eureka的结构和作用2.搭建eureka-server2.1.创建eureka-server服务2.2.引入eureka依赖2.3.编写启动类2.4.编写配置文件2.5.启动服务 3.服务注册3.1.引入依赖3.2 配置文件3.3启动多个user-service实例 4.服务发现4.1引入依赖4.2 配置文件4.3 服务拉取和负载均衡 最后…

flowable流程图绘制工具flowable-ui的安装和使用

一.简介 记录绘制flowable图的过程。 二.下载安装 1.下载 我这边是windows的,下载的版本是6.8.0,zip那个就可以,tar.gz是linux的 下载地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 下载截…

PyCharm-2023安装教程

访问JetBrains的官方网站,下载PyCharm最新版本的安装程序。 双击下载的安装程序,在弹出的安装向导中点击“下一步”。 阅读许可协议,并同意协议条款。 选择安装路径。默认情况下,PyCharm会安装在C:\Program Files\JetBrain…

STL——Lambad表达式

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程&…

【C语言】输入输出、字符串操作、内存操作、文件操作函数

三对基本输入输出函数 1.gets(),puts() gets()从标准输入中获取一个字符串,到str(自己创建的char型数组)中,读到换行或输入末尾结束获取r; 成功返回str,失败返回空。 char *gets(char *str)…

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】 前言推荐说明ARM汇编第一次上机(顺序、分支、单重循环)内容1 sum1流程图代码编写结果分析 2 sum2流程图代码编写结果分析 3 numbers流程图代码编写结果分析 最后 前言 20…

Python统计学:配对样本t检验~均值差的检验

配对样本 t检验 用于两个不同条件下,对同一对象进行测量所得的两个样本均值的区别。 比如吃药前和吃药后体温是否有变化,大鱼钩和小鱼钩钓的鱼的体长是否有差异等。 配对样本是什么? 配对样本需要满足两个基本条件: 1. 样本间存…

Java版本工程管理系统软件源码 自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…

【Java 数据结构】PriorityQueue(堆)的使用及源码分析

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

ES配置与使用

一、单机版安装 地址:www.elastic.co 下载tar格式,或者复制链接,wget url下载 启动: ./bin/elasticsearch 二、插件 解决页面问题,GitHub下载:elasticsearch-head 需要node环境。node -v检查node版本…

TryHackMe-Jack(boot2root)

Jack 破坏运行Wordpress的Web服务器,获得低特权用户,并使用Python模块将您的权限升级到root。 端口扫描 循例nmap web枚举 robots.txt wpscan枚举user wpscan直接爆 得到wendy的密码 直接登后台 根据题目提示,利用user role editor帮助我们…

使用chatgpt写一个划词翻译的浏览器插件

最近在网上流行的chatgpt,实在是太火了,好多人在使用,而且它的用处实在是太丰富了,能帮助我们解决很多问题,就比如说:编程,生成图片,翻译等。太丰富了。我看网上很多人都在说&#x…

江苏三年制专转本本法学类考纲配套课程及复习资料

法学类专业课内容比较多,需要背的也很多,今天我来给大家看一下我们应该如何学习法学类?01:考试科目考试科目:大学语文专业课基础理论考试课程A :法理学约 15%课程B:宪法学 约 15%课程C &#xf…

第九讲 常用数据结构之列表-2

列表的方法 列表类型的变量拥有很多方法可以帮助我们操作一个列表,假设我们有名为foos的列表,列表有名为bar的方法,那么使用列表方法的语法是:foos.bar(),这是一种通过对象引用调用对象方法的语法。后面我们讲面向对象…

接口自动化【三】(接口依赖之上传图片;Template 模块用法)

前言 一、后台上传图片接口 二、用postman来做这种有依赖的接口 三、使用 Template 模块进行字符串的替换 四、使用 Template 模块进行字符串的替换(针对于Excel表格中的数据) 总结 前言 本章中,对接口的依赖做了阐述,后台上…

怎么用Elai智能数字人来直播带货?

随着直播带货的火爆,越来越多的商家和品牌想要借助这一新兴的营销方式来提升销量和品牌影响力。但是,直播带货也面临着一些挑战,比如真人主播的成本高、稳定性差、风险大等。那么,有没有一种更好的解决方案呢?Elai智能…