最近做个音频外设的驱动,驱动搞定后却找不到该把它放在哪里,放在alsa 吧客户却基本不用,放在misc吧 有确实有很多已经放在里面很乱了,而且觉得这个本来就不是自己芯片内的IP驱动只能算是一个外接的外设,最主要是不想把它跟着sdk 发布出去,最后还是决定把它做成ko吧,这样他单独放在一个文件夹里面,有人需要就单独发布给他。
.ko文件
常规在linux下加载驱动模块都是.o文件, .o文件也就是object文件。

.ko文件是kernel object文件,与.o的区别在于其多了一些sections,他单独编译拥有自己的代码段 数据段等信息,
.modinfo
.modinfo section是由kernel source里的modpost工具生成的,包括:

MODULE_AUTHOR

MODULE_DESCRIPTION

device ID table

模块依赖关系。

depmod工具根据.modinfo section生成modules.dep, modules.*map等文件,以便modprobe更方便的加载模块。
可以在通过命令modinfo xxx.ko 看到ko 的信息。


可以看到,这个信息是写在.c 文件里面的。

剩下的就是写makefile 了,

obj-m +=ak_7755.o

PWD = ( s h e l l p w d ) a l l : m a k e − C / h o m e / x u w w / w o r k / z i y a n g / k e r n e l / M = (shell pwd) all: make -C /home/xuww/work/ziyang/kernel/ M= (shellpwd)all:make−C/home/xuww/work/ziyang/kernel/M=(PWD) modules
clean:

make -C /home/xuww/work/ziyang/kernel/ M=$(PWD) clean

这个Makefile 也比较简单,
obj-m + = xxx.o 这个是指明需要编译进ko的.c
M=$(PWD) M需要指明了编译的路径
-C /home/xuww/work/ziyang/kernel/ -C后面加上后面需要加载进kernel 的目录,也就是kernel的源代码路径
后面在奖赏modules或者clean 就可以了

在板端进行使用ko ,运行命令 : insmod ak_7755.ko

linux-编译ko相关推荐

  1. linux编译ko文件(不同内核源码版本)

    最近编译内核驱动程序遇到了一些困难,网上下载与我的linux系统相同的版本,编译的时候过不去(每次都是编译到sound文件夹下时提示找不到xxx.c文件),后来经过多次的实验后便把内核换了别的版本作为 ...

  2. 如何编译linux驱动ko

    1.概述 本文描述了liunx驱动ko的编译方法,其中单编驱动ko是本文的重点. 什么是ko? 在Linux中一个.ko文件就是一个模块文件. linux提供了一种称为模块(Module)的机制,模块 ...

  3. 【转】如何编译linux驱动ko

    前言 上一篇我们写了一篇关于怎么玩proc的文章,其中涉及到了怎么编译KO的操作.在查资料的时候发现了前辈的一篇很不错的文章,这里我们就直接拷贝做个笔记. 原文链接:https://blog.csdn ...

  4. linux编译.o文件,使用-O0编译Linux内核

    文章目录 1. 编译内核 1.1. 修改gcc优化等级 1.2. 防止`modpost: Section mismatches detected.`错误 1.3. 根据需要编译内核 1.4. 修改子目 ...

  5. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  6. linux 编译c_含有CGO代码的项目如何实现跨平台编译

    目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...

  7. linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接

    大家肯定都知道计算机程序设计语言通常分为机器语言.汇编语言和高级语言三类.高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类 ...

  8. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果

    # 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...

  9. centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...

    一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c  -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...

  10. linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...

最新文章

  1. php 进程管理,php如何管理进程
  2. php-fpm 进程管理
  3. OpenCvSharp 形态学操作(膨胀、腐蚀)
  4. 022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件
  5. cenos 下的一些常用命令及技巧收集篇
  6. 自己动手写操作系统 - Hello DTOS
  7. Coverity介绍以及典型缺陷说明
  8. 【定量分析、量化金融与统计学】R语言MANOVA多元方差分析
  9. Javaweb制定的订餐系统+jsp+servlet+Java+MySQL
  10. E.03.17 Lou Ottens, Father of Countless ==Mixtapes==, Is Dead at 94
  11. Matlab求解矩阵方程
  12. Cursor——ChatGPT的替代品【笔记】
  13. 百度地图搜索提示层级覆盖问题
  14. 数据库释放空间时不能使用delete
  15. 十四、猜码游戏: 每一轮里,程序随机生成两个数字,一个是码数,范围:0到5,一个是猜数,范围:码数到10。用户输入两个数字,也分为码数和猜数。 若这一轮程序的猜数等于两个码数之和,输出“电脑胜”,若
  16. #论文阅读CTG The Use of Convolutional Neural Networks in Biomedical Data Processing
  17. 论文解读:Prefix-Tuning: Optimizing Continuous Prompts for Generation
  18. cmd打开html文件,网页运行exe,exe软件打开弹出cmd
  19. 深度学习、机器学习方向计算机毕业设计题目大全(算法应用实践类)
  20. Typecho设置伪静态

热门文章

  1. Ubuntu查看系统版本信息
  2. Matlab柱状图填充线条【研究一天终于弄明白了】
  3. 2022 中国云计算生态蓝皮书
  4. cass 河流走向 符号_从地形高程点提取河道断面(CASS法)
  5. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)
  6. 定增保底方式与纠纷案例
  7. tab bar 与 toolbar使用的区别
  8. 计算机网络(HTTP、TCP/IP、UDP)详解-面试篇
  9. 电脑桌面图标右下角显示有白色文本框
  10. 有关app上架的注意事项