将模块编译入内核

简介: 将模块编译入内核
  1. 准备好要编译到内核的模块源码
#include <linux/init.h>
#include <linux/module.h>
static int __init hello_init(void)
{
  printk("hello world!\n");
  return 0;
}
static void __exit hello_exit(void)
{
  printk("<7>hello <0>exit\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");

这是一个简单的模块hello.c。

  1. 拷贝文件 如果要将刚才的驱动程序直接编译到内核,那么我们必须把hello.c拷贝到内核的某个目录下。

字符设备可以考虑放到以下目录:

2. 修改Makefile

sudo vim Makefile

3. 修改Kconfig

sudo vim Kconfig

6. 重新配置 执行

make menuconfig

输入 / 可以根据关键字查找模块所在位置。

根据路径找到我们刚才的模块配置路径:

按下空格键设置为*,也就是让对应模块编译到内核中,然后保存退出。

5. 重新编译内核

make -j16
  1. 将重新编译后的内核载到开发板中

    模块成功加载到内核中


目录
相关文章
|
存储 安全 Linux
linux系统中u-boot命令的EMMC和SD卡操作命令分析
linux系统中u-boot命令的EMMC和SD卡操作命令分析
1882 1
|
5月前
|
数据挖掘 C++ 计算机视觉
Python:ImportError:DLL loadfailed while importing onnxruntime_pybind11_state: 动态链接库(DLL)初始化例程失败 报错解决
在进行文件夹内人脸识别与对比聚类时,遇到onnxruntime库报错,通常因版本不兼容或环境冲突导致。本文整理了五种解决方案:降级onnxruntime至1.14.1、重装库、区分GPU/CPU版本、安装Visual C++运行库、创建Python虚拟环境。通过版本匹配与环境隔离,有效解决DLL初始化失败等问题,提升项目稳定性。
2239 8
|
存储 算法 调度
FreeRTOS多任务系统
FreeRTOS多任务系统
727 0
|
Java 数据库连接 数据库
Springboot整合mybatisPlus开发
MyBatis-Plus是一个MyBatis的增强工具,旨在简化开发和提高效率。它在不修改原有MyBatis的基础上提供额外功能。要将MyBatis-Plus集成到SpringBoot项目中,首先通过Maven添加mybatis-plus-boot-starter和相应数据库驱动依赖,然后配置application.yml中的数据库连接信息,并指定Mapper类的扫描路径。Mapper接口可继承BaseMapper实现基本的CRUD操作。
603 0
|
算法 网络协议 Linux
Linux模块文件编译到内核与独立编译成.ko文件的方法
Linux模块文件编译到内核与独立编译成.ko文件的方法
5630 0
|
存储 监控 网络协议
深入理解非阻塞 TCP 连接:getsockopt 的关键作用
深入理解非阻塞 TCP 连接:getsockopt 的关键作用
1594 0
|
存储 Ubuntu 测试技术
Ubuntu镜像源cn.arichinve.ubuntu.com不可用原因分析和解决
源配置的是cn.archive.ubuntu.com,但是发现,系统更新时,自动去找了清华大学的Ubuntu源。
9836 0
|
Linux C语言 SoC
设备树知识小全(二)
设备树知识小全(二)
838 0
|
编解码 Shell Linux
uboot移植到IMX6ULL平台详细过程(下)
uboot移植到IMX6ULL平台详细过程(下)
1054 0