编写了一个字符设备 chrdevbase.c ,在本机编译运行通过了,准备进行交叉编译,主要涉及makefile的编写

本机编译的makefile

  先看下本机编译的makefile:

KERNELDIR := /lib/modules/4.15.0-189-generic/build
#本机编译使用/lib/modules/`uname -r`/buildCURRENT_PATH := $(shell pwd)#要生成的模块名
obj-m := chrdevbase.obuild: kernel_moduleskernel_modules:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean

编译后查看下.ko,是x86-64架构

交叉编译的makefile

  要进行交叉编译,首先要安装交叉编译工具链,这里不进行介绍了,我是直接安装了官方提供的预编译的toolchain。makefile如下

CROSS_COMPILE := aarch64-none-linux-gnu-
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ldKERNELDIR := /home/wqs/Linux_SDK/rk3588/kernel
#交叉编译使用对应的Kernel源码目录CURRENT_PATH := $(shell pwd)
ARCH := arm64#要生成的模块名
obj-m := chrdevbase.obuild: kernel_moduleskernel_modules:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules ARCH=$(ARCH)
clean:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
  • 需要指定交叉编译器 CROSS_COMPILE ,用到的 gcc 以及 ld 工具(见1~3行)
  • KERNELDIR需要指定到使用的Linux内核目录(见第5行)
  • 要指定内核架构,见17行的 ‘ARCH=$(ARCH)’

  编译通过后查看一下.ko,可以看到产生了arm64架构的驱动

Linux交叉编译生成驱动模块.ko相关推荐

  1. kgdb调试linux内核以及驱动模块

    kgdb调试linux内核以及驱动模块 本文将简要描述如何配置kgdb进行内核以及驱动模块调试,以嵌入式开发为例,但同样对于其他有需要调试kernel有一定的参考价值.本文实验环境为qemu搭建的ri ...

  2. Linux网卡模块,linux查看网卡驱动模块信息

    linux查看网卡驱动模块信息 来源:互联网 作者:佚名 时间:2015-03-19 09:23 1.查看网卡使用的驱动[root@slavetwo~]#ethtool-iem1driver:tg3v ...

  3. linux 编译器制作,Linux交叉編譯器的制作(一)

    Linux交叉編譯器的制作-buildroot 1.問題出現 編譯內核時,需要在PC機上進行編譯才能下載到開發板上去,但兩個平台不一樣,需要我們自己實現這個功能. [klaus@localhost l ...

  4. Linux驱动 | 加载.ko驱动模块的两种方法(insmod与modprobe)

    文章目录 1.加载驱动模块 2.查看已加载的驱动模块列表 3.卸载驱动模块 假设要加载的驱动程序模块名为SHT21.ko 1.加载驱动模块 方法一 进入SHT21.ko驱动模块文件所在的目录,然后直接 ...

  5. Linux 单独编译驱动模块(ko文件)

    0 背景 调试内核模块时,不想每次都要整个工程一起编译,只想编译单独的ko文件,也不影响模块间的依赖关系(会修改mod.depend信息). 1 确认必要的环境变量 创建env.sh文件,并chmod ...

  6. linux usb网卡驱动 ko,qf9700 USB网卡在x86 linux和arm linux上的驱动安装以及配置

    最近要在一块老板子上面移植openwrt,需要扩展网口,于是选择了qf9700这款USB网卡,附赠的光盘里面有提供在linux下面安装的驱动源代码,所以我们要自己编译驱动源代码生成内核加载模块,加载模 ...

  7. linux rmmod :remove ‘xxx.ko‘ :Function not implemented

    背景 如题,linux系统在使用rmmod卸载驱动模块时报错rmmod :remove 'xxx.ko' :Function not implemented 解决方案

  8. 出现使用选项-std=c99或-std=gnu99来编译您的代码错误或者如何让Linux内核编译驱动模块时支持C99

    最近在Linux系统下编译嵌入式代码时出现问题: 问题如下图: 然后发现问题出在这: use option -std=c99 or -std=gnu99 to compile your code 上面 ...

  9. imx6ull的DMA实现的linux用户程序和驱动模块程序源码

    本文是使用正点原子阿尔法IMX6ULL开发板作为硬件基础编写的用户应用程序和内核驱动程序. 实现了Linux内核中DMA引擎驱动模块的功能,用户程序测试通过. 程序的关键步骤: 1.一是使用内核驱动模 ...

最新文章

  1. 转载大神的 Linux查看物理CPU个数、核数、逻辑CPU个数
  2. linux命令用tar czvf .tar.gz好用的
  3. 北邮OJ 884. 16校赛-Average Modulo
  4. Python + OpenCV 太好玩了,可惜你可能还不会
  5. 单片机c语言 u16,单片机C语言的误用
  6. mybatis中的查询缓存
  7. 生产环境下,oracle不同用户间的数据迁移。第三部分
  8. 数组中其余的排除_带你一步步精通数组之十五:数组的计算规律之五
  9. SQL系统教程一(表之间的连接关系)
  10. 软件工程网络15个人阅读作业2(201521123010徐璐琳)
  11. mina mysql_Mina源码阅读笔记(四)—Mina的连接IoConnector2
  12. 四个好看的table表格样式
  13. r7 2700X装Linux,R7-2700X配什么主板?AMD锐龙7 2700X主板推荐 (全文)
  14. error occurred during initialization of VM报错解决
  15. 粒径20nm的金纳米粒Nafion-GOx-AuNPs对十二烷醇/葡萄糖氧化酶的标记过程
  16. 设置手机静音和固定电话来电时手机震动
  17. TCPIP之IP协议及IP地址详解
  18. xmind怎么导出为pdf?Xmind最全入门教程
  19. 利用jieba分词分析小说二
  20. pdf转换成txt转换器在线转换

热门文章

  1. Android IBinder的linkToDeath介绍及情景模拟
  2. 单目、双目及深度相机比较
  3. 惠普星系列F2F3之类键恢复及触摸板关闭方法
  4. 生成sitemap类
  5. IDRISI软件的MCE 模块建立各个地类的适宜性图像详细教程2
  6. 考前复习必备MySQL数据库(关系型数据库管理系统)
  7. 怎么把图片文件大小压缩到25k到40k还比较清晰
  8. 通过jira开放接口创建issue时指定链接的问题
  9. xhprof安装和使用
  10. opencv编译指定自定义的ffmpeg版本,cuda加速