makefile实现创建目录和复制.ko文件

简介: makefile实现创建目录和复制.ko文件

每次编译完驱动后,总是要将一些.ko文件及其测试的app复制到我们的跟文件系统中去,一直调试,一直cp,cp,烦的一批,下面提供一个Makefile

  • make //编译项目
  • make file //在存放.ko文件目录中创建对应项目的目录
  • make install //将*.ko及其应用测试文件移动到根文件中
  • make clean //删除make出来的文件

Makefile

# 1. 使用不同的开发板内核时, 一定要修改KERN_DIR
# 2. KERN_DIR中的内核要事先配置、编译, 为了能编译内核, 要先设置下列环境变量:
# 2.1 ARCH,          比如: export ARCH=arm64
# 2.2 CROSS_COMPILE, 比如: export CROSS_COMPILE=aarch64-linux-gnu-
# 2.3 PATH,          比如: export PATH=$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin 
# 注意: 不同的开发板不同的编译器上述3个环境变量不一定相同,
#       请参考各开发板的高级用户使用手册
# ROOTFS_DIR 根文件系统中存放 *.ko文件所在目录
# PROJECT_NAME 在存放.ko文件目录中创建对应项目的目录
# DRIVER_NAME 项目中需要编译出.ko来的驱动
# APP_NAME 项目中的应用测试文件
#make 编译项目
#make file 在存放.ko文件目录中创建对应项目的目录
#make install 将*.ko及其应用测试文件移动到根文件中
KERN_DIR = /home/alientek/linux/IMX6ULL/linux/temp/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek
ROOTFS_DIR = /home/alientek/linux/nfs/rootfs/experiment
#项目名字
PROJECT_NAME = chr_dev
#各驱动名字,ko
DRIVER_NAME1 = chr_dev
DRIVER_NAME2 = 
#app名字
APP_NAME = chr_test
all:
  make -C $(KERN_DIR) M=`pwd` modules 
  $(CROSS_COMPILE)arm-linux-gnueabihf-gcc -o $(APP_NAME) $(APP_NAME).c 
clean:
  make -C $(KERN_DIR) M=`pwd` modules clean
  rm -rf modules.order
  rm -f $(APP_NAME)
file:
  mkdir $(ROOTFS_DIR)/$(PROJECT_NAME)
install:
  cp *.ko $(ROOTFS_DIR)/$(PROJECT_NAME)
  cp $(APP_NAME) $(ROOTFS_DIR)/$(PROJECT_NAME)
# 参考内核源码drivers/char/ipmi/Makefile
# 要想把a.c, b.c编译成ab.ko, 可以这样指定:
# ab-y := a.o b.o
# obj-m += ab.o
obj-m += $(DRIVER_NAME1).o

应用(亲测可用)

如果已经创建了对应项目的目录就不需要·make file了


目录
相关文章
|
自然语言处理 Ubuntu 安全
14个你必须要知道的ubuntu快捷键
14个你必须要知道的ubuntu快捷键
14个你必须要知道的ubuntu快捷键
|
算法 网络协议 Linux
Linux模块文件编译到内核与独立编译成.ko文件的方法
Linux模块文件编译到内核与独立编译成.ko文件的方法
5504 0
|
编解码 Ubuntu 算法
Ubuntu桌面图标指南:一文了解如果设置ubuntu 软件图标
Ubuntu桌面图标指南:一文了解如果设置ubuntu 软件图标
4897 0
|
数据可视化 BI 项目管理
甘特图不再复杂!5款好用的在线项目管理工具大盘点
项目管理中,高效组织时间和任务至关重要。甘特图作为直观工具,能清晰展示项目计划,帮助追踪进度、分配资源。本文介绍了甘特图的核心功能与优势,并推荐了5款在线项目管理工具,包括板栗看板、Asana、Trello、Monday.com和Smartsheet,助力团队实现高效管理。
605 9
|
传感器 物联网 人机交互
物联网:物联网,作为新一代信息技术的重要组成部分,通过智能感知、识别技术与普适计算等通信感知技术,将各种信息传感设备与互联网结合起来而形成的一个巨大网络,实现了物物相连、人物相连,开启了万物互联的新时代。
在21世纪,物联网(IoT)作为新一代信息技术的核心,正以前所未有的速度重塑生活、工作和社会结构。本文首先介绍了物联网的概念及其在各领域的广泛应用,强调其技术融合性、广泛的应用范围以及数据驱动的特点。接着,详细阐述了物联网行业的现状和发展趋势,包括政策支持、关键技术突破和应用场景深化。此外,还探讨了物联网面临的挑战与机遇,并展望了其未来在技术创新和模式创新方面的潜力。物联网行业正以其独特魅力引领科技发展潮流,有望成为推动全球经济发展的新引擎。
|
前端开发 JavaScript UED
除了 Webpack,还有哪些工具可以进行代码分割?
除了 Webpack,还有哪些工具可以进行代码分割?
275 1
|
传感器 编解码 Linux
V4l2 专栏
V4l2 专栏
677 1
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
Linux 编译器 开发工具
『Linux升级路』基础开发工具——make/Makefile篇
『Linux升级路』基础开发工具——make/Makefile篇
379 2
|
Web App开发 JavaScript 前端开发
html img Src base64 图片显示
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符。 比如:data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAA...
5382 0
下一篇
开通oss服务