精华内容
下载资源
问答
  • linux编译ko文件(不同内核源码版本)

    万次阅读 2017-09-30 18:50:21
    网上下载与我的linux系统相同的版本,编译的时候过不去(每次都是编译到sound文件夹下时提示找不到xxx.c文件),后来经过多次的实验后便把内核换了别的版本作为系统内核启动成功编译ko文件,下面贴上具体过程:只...

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

    只需要准备一个与自己linux系统内核接近的版本(我的系统内核是2.6.32.21后来下载了一个2.6.32稳定版成功编译并且可以进入这个新的内核)。

    1.首先解压下载的内核源码拷贝到/usr/src路径下:
    这里写图片描述

    2.切换到root权限下进入内核源码文件夹 cd /usr/src/linux-2.6.32:
    这里写图片描述

    3.配置config:

    这里由于我的menuconfig无法启动(根据网上参考的资料安装了ncurses并且设置了桌面分辨率还是打不开,只能通过命令显示页面(ctrl+alt+f1)打开),我跳过了这一步直接进行make oldconfig (最后说明设置编译内核的设置);
    

    编译config

    4.编译内核 make:
    这里写图片描述

    5.安装模块 make modules_install:
    这里写图片描述

    6.make install:
    这里写图片描述

    7.创建initrd文件:mkinitramfs -o /boot/initrd.img-2.6.32(这一步执行后镜像就生成了),不过这一次生成的镜像重启后无法进入安装的这个内核···,这个执行后继续执行下个命令;

    8.更新镜像:update-initramfs -c -k 2.6.32,到这里内核安装完成了(在这里膜拜下当初参考的那位大神,本以为不同内核版本的内核安装后不能进入,这条指令改变了我的看法···);
    这里写图片描述

    9.更改启动文件:进入/boot/grub文件夹,输入命令update-grub;
    这里写图片描述

    10.更改启动文件:gedit /boot/grub/grub.cfg ,然后找到安装的内核信息位置放到原来内核信息的上面(大括号内为内核的启动信息);
    这里写图片描述

    11.更改内核选择页面停留时间:还是在grub.cfg内找到所有timeout进行更改(单位为秒),if判断处不需要更改;
    这里写图片描述

    重启后,可以选择自己的新内核进入了。

    下面说下.ko文件的编译情况…!参考书籍、以及查看网上的资料一直没有编译出.ko文件,这里说下我的编译方式:

    1.首先编写一个Makefile:
    这里写图片描述

    2.进行编译文件:
    我增加了make编译指定,make -C /lib/modules/2.6.32/build M=/home/linux/work/Testlinux/Testhallo(这种方式成功编译出了.ko文件在别的工程中也是如此);
    这里写图片描述

    到这里整个内核编译ko的过程结束了,(由于我的电脑没有网络) 经历多次下载新的内核源码以及询问几位朋友总结出来的方法,在这里感谢网上提供参考资料的朋友和我询问的朋友!

    展开全文
  • Linux内核编译 ko文件

    千次阅读 2014-03-24 14:54:49
    1. make menuconfig 选择驱动为 <M> 2.make modules 3.查看目录即可 

    1. make menuconfig 选择驱动为   <M>

    2.make modules

    3.查看目录即可 

    展开全文
  • Linux内核中单独编译KO文件

    千次阅读 2013-08-31 10:25:53
      在Linux内核中单独编译KO文件 在当前模块目录下创建Makefile: obj-m := mxt224.o 然后再该模块目录下打开终端输入:make -C /home/kernel_path/ M=$(pwd) modules /home/kerne
    转自: http://blog.csdn.net/suntao222/article/details/7457886
     

    在Linux内核中单独编译KO文件

    在当前模块目录下创建Makefile: obj-m := mxt224.o

    然后再该模块目录下打开终端输入:make -C /home/kernel_path/ M=$(pwd) modules

    /home/kernel_path/ 是内核所在路径

    或者用该makefile:

    [plain]  view plain copy
    1. #set KERNELDIR and CROSS_COMPILE path yourself  
    2. #  
    3. ifneq   ($(KERNELRELEASE),)   
    4.  obj-m   :=   mxt224.o  
    5. else   
    6.  KERNELDIR   :=   /home/stone/stone_share/Project/t11/t11-2.3/kernel  
    7.  #KERNELDIR   :=   /home/bee/bee_share/mini6410/linux-2.6.36-android/linux-2.6.36-android  
    8.  #KERNELDIR   :=   /opt/mini6440/linux/linux-2.6.36  
    9.  PWD   :=   $(shell pwd)  
    10.  #CROSS_ARCH := ARCH=arm CROSS_COMPILE=/usr/local/arm/4.5.1/bin/arm-linux- #6410-linux-2.6.36  
    11.  CROSS_ARCH := ARCH=arm CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-  
    12. default:   
    13.  $(MAKE) $(CROSS_ARCH) -C  $(KERNELDIR)   M=$(PWD)   modules   
    14.   
    15. install:   
    16.  $(MAKE)  $(CROSS_ARCH) -C  $(KERNELDIR)   M=$(PWD)   modules_install   
    17. clean:   
    18.  rm   -rf   *.o   *~   core   .depend   .*.cmd   *.ko   *.mod.c   .tmp_versions *.symvers *.d *.markers *.order  
    19.   
    20. .PHONY:   modules   modules_install   clean  main  
    21. endif  
    展开全文
  • linuxko文件生成

    2014-03-27 22:23:18
    介绍android linux ko文件编译
  • linux-编译ko

    千次阅读 2019-03-23 14:28:28
    最近做个音频外设的驱动,驱动搞定后却找不到该把它放在哪里,放在alsa 吧客户却基本不用,放在misc吧 有确实有很多已经放在里面很乱了,而且觉得这....ko文件 常规在linux下加载驱动模块都是.o文件, .o文件也就是o...

    最近做个音频外设的驱动,驱动搞定后却找不到该把它放在哪里,放在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:makeC/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

    展开全文
  • 系统:centos 内核:5.3.7 代码: sockopt_test.h ...#ifndef __SOCKOPT_TEST_H_ ... rm -f *.o *.ko ``` 编译结果: ![图片说明](https://img-ask.csdn.net/upload/201910/22/1571741565_420929.png)
  • obj-m := target.o target-objs := src1.o src2.o src3.o
  • android平台下编译KO文件

    千次阅读 2013-08-01 11:04:23
    横线下是别人的方法当初参考的,但是没有执行成功,我实验的是RK3066平台的, 最后发现了解决方法,其实很简单主要是两个步骤: ...就可以了在目录下会发现LKT401.KO文件 ----------------------
  • 当需要一个ko在一个内核下编译,insmod到另一个内核时, 1、include/config/kernel.release文件中为内核版本号,将其...注意:这样修改并保存后,编译出来的.ko文件里面的版本信息就更改了,但是重新编译内核时会变回.
  • mtk_hif_sdio-objs := linux/hif_sdio.o  mtk_hif_sdio-objs += linux/hif_sdio_chrdev.o  mtk_hif_sdio-objs += linux/osal.o
  • 基于imx6ul 平台(yocto) 参考 https://blog.csdn.net/suntao222/article/details/7457886 ... 编译rtk_hciattach可执行文件 ${CC} -o rtk_hciattach hciattach_rtk.c ...
  • linux 系统 ko模块编译

    千次阅读 2016-05-23 16:35:30
    今天整理以前笔记,发现曾经里面有一个Makefile文件。...写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko   再加载一下insmod my.ko dmesg|grep module 看到模块初始化时候的打印 卸载模
  • 编译驱动ko文件

    千次阅读 2017-05-03 13:29:23
    KERN_DIR = /work/system/linux-3.4.2 all: make -C $(KERN_DIR) M=`pwd` modules clean: make -C $(KERN_DIR) M=`pwd` modules clean rm -rf modules.order obj-m += hello.o -
  • 多个.c文件编译成.ko文件

    千次阅读 2018-11-26 01:57:46
    将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c、adc_driver.c编译成一个ko文件! 采用方法: 第一步、修改C文件 1、去掉adc_device.c文件里module_init(xxx)、module_exit(yyy)中xxx、yyy 函数...
  • # ko 文件名 不能与 目标文件名 相同 MODULE_NAME = lkm_test obj-m := $(MODULE_NAME).o #目标文件名 # file1.o file2.o dir1/file3.o $(MODULE_NAME)-objs := test.o else CODEDIR ?= /ho...
  • 写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko 再加载一下insmod my.ko dmesg|grep module 看到模块初始化时候的打印 卸载模块rmmod my.ko dmesg|grep module 看模块卸载时候的打印 ...
  • 模块编译KO文件Makefile 2.6内核通用

    千次阅读 2011-11-22 19:17:51
    #######hello 单文件编译############## obj-m := hello.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: rm -rf
  • linux学习笔记(五)编译内核模块生成ko驱动文件 文章目录系列文章目录前言一、加载内核简介二、第一个hello world文件1.文件树2.hello.c3.Makefile三 编译命令总结 前言 系统:ubuntu 1604 功能:加载内核模块 ...
  • linux .ko编译与测试

    千次阅读 2017-11-06 11:53:40
    以【tiny210 按键实验为例】 【采用按键驱动(异步通知机制)】 ... 建立空文件夹(ko文件),在里面添加需要制成的文件: 内核源码:my_button.c Makefile文件:Makefile 测试文件:buttons_test.c
  • arm-linux交叉编译ko的makefile

    千次阅读 2014-02-11 13:46:41
    make命令 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- makefile: CROSS_COMPLE:=arm-none-linux-gnueabi- ARCH:=arm CC:=$(CROSS_COMPILE)gcc LD:=$(CROSS_COMPILE)ld obj-m := simple.o ...
  • android 独立编译ko包方法

    千次阅读 2017-07-14 15:13:15
    android 编译ko包实际与linux编译ko没有区别,首先编写.c .h文件等,之后编写makefile文件, makefile中 KERNEL_DIR 为kernel编译后产生的临时文件夹的目录,有些系统工程会重定向生成的内核临时文件目录, 所以不...
  • 为减少内核所占的空间,很多时候我们在编译内核时都会选择裁去一些暂时不用的驱动,当我们在使用时找不到对应的驱动,除了重新编译内核外,一个比较方便的做法是将对应的驱动编译成.ko文件(模块),再添加到系统下...
  • 在开发过程中,我们需要编译android工程的内核KO文件, 一种方法是修改对应模块的Makefile,编译ko文件,需要指定 make -C 内核源码路径。 KSRC := /home/xxx/imx6_android4/filesystem/kernel_imx make -C $(KSRC...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,595
精华内容 8,638
关键字:

linux编译ko文件

linux 订阅