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文件的方法
4914 0
|
机器学习/深度学习 人工智能 算法
使用Python和Scikit-learn库来实现一个基本的K-最近邻(KNN)分类器
使用Python和Scikit-learn库来实现一个基本的K-最近邻(KNN)分类器
234 0
|
Ubuntu 网络协议 数据安全/隐私保护
RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏镜像+支持hdmi屏镜像)
编译了uboot,kernel,buildroot后,可以单独输入固件,也可以整体打包成rootfs进行一次性输入,rootfs直接更新升级这个方式目前也是常用的。本篇刷了2个镜像,一个支持mipi屏幕得ubuntu固件,一个支持hdmi固件,但是都不支持笔者的usb触摸屏
|
算法 Linux C语言
Linux驱动IO篇——ioctl设备操作
Linux驱动IO篇——ioctl设备操作
|
Linux API iOS开发
|
Linux Shell 数据处理
Linux驱动开发详细解析
Linux驱动开发详细解析
6791 0
Linux驱动开发详细解析
|
Ubuntu 数据安全/隐私保护
饥荒:从0开始搭建服务器
记得刚和朋友联机的时候,都是校园网,我做主机他卡,他做主机我卡。这让我和他玩的都不爽之后到饥荒三个吧求助,得到的答案就是云服务器。然后我就去贴吧求助,终于,在用了一下午的时间后,找到了一个较为简单的方法,那就是用云服务器,再配合hi434785814大神的软件即可搭建饥荒云服务器。
饥荒:从0开始搭建服务器
|
算法
Dijkstra算法最小堆优化
Dijkstra算法最小堆优化
282 0
Dijkstra算法最小堆优化