Linux下编译构建成功HelloWorld驱动程序并加载
编写一个hello_world.c的驱动程序;
hello_world.c;
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h> //指定license版本
MODULE_LICENSE("GPL"); //设置初始化入口函数
static int __init hello_world_init(void)
{printk(KERN_DEBUG "hello world!!!\n");return 0;
}//设置出口函数
static void __exit hello_world_exit(void)
{printk(KERN_DEBUG "goodbye world!!!\n");
}//将上述定义的init()和exit()函数定义为模块入口/出口函数
module_init(hello_world_init);
module_exit(hello_world_exit);
写一个makefile;
obj-m+=hello_world.o
all:make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean
执行make命令;没有make命令;执行 sudo apt install make,来安装make命令;
再执行make;提示下图错误;
把makefile文件中的提示出错行的空格改为Tab键盘;
再执行make命令;提示没有Makefile文件;
把makefile改为Makefile;此文件没有后缀名;
然后再make;gcc没有安装,
安装gcc;
构建驱动程序成功;如下图;hello_world.ko出来了,这个是构建好的驱动程序;
执行insmod,加载,
加载成功;用lsmod列出模块看一下,hello_world驱动已经被加载;
下面看一下写一个测试程序来测试一下驱动;test.c;
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#include <stdio.h>
#include <stdlib.h>int main(int argc, char **argv)
{int fd;int val = 1;fd = open("hello_world", O_RDWR);if(fd == -1){printf("can't open...\n");exit(EXIT_FAILURE);}read(fd, &val, sizeof(val));exit(EXIT_SUCCESS);
}
gcc一下;出现下图错误;下回再整;
Linux下编译构建成功HelloWorld驱动程序并加载相关推荐
- Linux下的ELF文件、链接、加载与库(含大量图文解析及例程)
Linux下的ELF文件.链接.加载与库 链接是将将各种代码和数据片段收集并组合为一个单一文件的过程,这个文件可以被加载到内存并执行.链接可以执行与编译时,也就是在源代码被翻译成机器代码时:也可以执行 ...
- linux内核使用scons构建,linux下编译构建工具--scons下载地址及说明
介绍:Scons是一个开放源码.以Python语言编码的自动化构建工具,可用来替代make编写复杂的makefile.并且scons是跨平台的,只要scons脚本写的好,可以在Linux和Window ...
- linux装百度网盘不能运行,百度网盘Linux版不能登录成功,打开一直加载的解决方法...
如果你安装了百度网盘Linux版,打开一直加载,一直不能登录成功,那请按照下面方法处理.如果你要在深度deepin系统中安装百度网盘,请到商店中去安装,已经上架百度网盘客户端了. 出现的状况及解决方法 ...
- linux下nginx监听443端口 重新加载配置不生效,需要重启nginx
在nginx里放开443的监听,执行 nginx -s reload 命令,访问https不生效 需kill调nginx的进程重新后方能添加443端口的监听 参考 https://blog.csdn. ...
- Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决
Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...
- linux 保存编译log,(转)Linux下编译安装log4cxx
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...
- Linux 下编译并运行C语言程序
Linux下编译并运行C语言程序 ,以Centos 系统为例 1>新建一个hello.c文件 可以直接用图形用户界面新建也可以使用命令新建. 用命令行的话,要用到Linux下的vi编辑器的相关命 ...
- linux3.10.53编译,根据官方文档在Linux下编译安装Apache
根据官方文档在Linux下编译安装Apache 前言 永远记住官方文档才是最准确的安装手册,这篇文章仅为对官方文档的解读和补充,学习提升务必阅读官方文档: http://httpd.apache.or ...
- linux如何编译boost指定库,linux下编译安装boost库
linux下编译安装boost库 先看一下系统环境 Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15 UTC 2015 x ...
最新文章
- SAP 取月度期初库存和月度期末库存(历史库存)
- Linq to Oracle 使用教程(八)使用 T4 模版生成代码
- python 数据平滑_数据平滑方法的原理和应用
- 微软与 OpenAI 达成合作,获得 GPT-3 独家使用授权!
- barco控制软件支持linux_vnc远程控制软件linux,在linux系统上能够使用的vnc远程控制软件...
- iterator总结(未完)
- 全网首发:linux任务栏分组的研究
- 流程和企业成熟度模型(PEMM)
- ABAQUS使用功能总结
- 动态壁纸安卓_高清无水印!这4款壁纸软件,让你的手机好看又独特
- 2.4g低功耗SI24R1校园答题器
- vue中用js将json数据按英文字母顺序进行排序
- TestNG跳过某个测试方法
- 故事版xib --view上添加tableview
- Latex使用遇到的问题
- 大家都在努力,你凭什么不努力?
- Windows环境下Nginx配置本地虚拟域名和Nginx代理
- 论文分享:基于深度强化学习的无人机三维导航
- VDD、VBAT、VDDA、VREF+区别
- Could not connect to archive.ubuntukylin.com:10006 (120.240.95.35), connection timed out
热门文章
- 开机出现grub rescue无法进入系统 恢复ubuntu系统下grub引导 windows xp和ubuntu9.10双系统引导程序的修复
- 计算属性一般是没有set方法, 只读属性 ||计算属性的缓存
- 从hotspot底层对象结构理解锁膨胀升级过程||深入jdk源码理解longadder的分段cas优化机制——分段CAS优化
- 使用git将本地项目上传到github
- 为什么我们的web前端变的越来越复杂
- 学习《FreeRTOS源码详解与应用开发》笔记
- CTFshow 信息收集 web1
- sdut 3361迷宫探索dfs
- [YTU]_2446( C++习题 输入输出--私有继承)
- dot--向量或矩阵的点乘