内核在编译的时候,可以支持单独模块化编译,只需要一个小小的Makefile即可搞定。

步骤如下:

1.在任意位置创建目录

  

vim Makefile

2.在Makefile中添加如下代码(我的kernel目录是/opt/kernel_xilinx_v4.4):

obj-m += my_drv.o
all:
make -C /opt/kernel_xilinx_v4. SUBDIRS=$(PWD) modules
clean:
make -C /opt/kernel_xilinx_v4. SUBDIRS=$(PWD) clean

3.保存退出即可

说明:

  obj-m += my_drv.o:将my_drv.c单独编译成对应目标文件my_drv.ko

  all:此目标没有依赖,但是此目标对应的命令:make -C /opt/kernel_xilinx_v4.4 SUBDIRS=$(PWD) modules 在执行 make 或者 make all 时就执行

  make -C /opt/kernel_xilinx_v4.4:等价于先 cd /opt/kernel_xilinx_v4.4 然后执行 make modules

  "-C":表示进入指定目录中

  PWD:获取当前所在路径

  SUBDIRS=$(PWD):告诉内核源码到指定目录去编译内核程序

  clean:执行 make clean 时删除生成的目标文件

后续补充Makefile的语法规则。

Linux内核程序的编译:模块化编译的更多相关文章

  1. [转]Caffe在Linux下的安装,编译,实验

    Caffe在Linux下的安装,编译,实验  原文地址:http://www.cnblogs.com/evansyang/p/6150118.html 第一部分:Caffe 简介 caffe是有伯克利 ...

  2. C语言模块化编译介绍

    C语言模块化编译介绍 模块化编程的概念 所谓模块化变成(多文件开发),就是多文件(.c文件)编程,一个.c文件和一个.h文件可以被称为一个模块. 头文件开发的注意事项: 1)头文件中可以和C程序一样引 ...

  3. 【转载】在Linux中使用VS Code编译调试C++项目

    原文:在Linux中使用VS Code编译调试C++项目 最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS ...

  4. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  5. linux kernel 模块多文件编译

    /*************************************************************************** * linux kernel 模块多文件编译 ...

  6. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

  7. Linux 下提高make的编译效率

    Linux下安装程序,一般都通过包管理器安装,但是包管理器或软件商店里的软件往往不是最新版本的,安装最新版软件时通常是下载源代码进行编译. 编译安装源代码时就离不开make了,但是make是单线程的, ...

  8. Linux下C++/C的编译调试

    这几天因为任务的原因我需要在ubuntu下编写程序.因此恶补了许多linux程序编写的知识.我分以下几个方面总结我所学的知识. gcc,g++,make命令的使用 gdb 调试 VScode的使用 c ...

  9. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

随机推荐

  1. Centos7下面安装eclipse

    下载Eclipse压缩包 下载路径 http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/luna/SR2/ec ...

  2. source insight设置问题 [问题点数:20分,结帖人leecapacity]

    http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f7327d818c027fa3cf1fd5791d1c05 ...

  3. Queue<T>队列与Stack<T>堆栈

    一.概述: Queue<T>队列,对象的先进先出集合("FIFO").Stack<T>栈,对象的后进先出集合("LIFO"). Queu ...

  4. [Assignment] C++2

    作业要求:PAT1025 翻转链表 代码在这里

  5. MySQL忘记密码处理方法

    在windows下: 打开命令行窗口,停止mysql服务:        Net stop mysql 在cmd下启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe 执行:m ...

  6. Excel对同样项求和

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/yeweiouyang/article/details/32107423 方法一(SUMIF公式求和) ...

  7. Guava包学习---Sets

    Sets包的内容和上一篇中的Lists没有什么大的区别,里面有些细节可以看一下: 开始的创建newHashSet()的各个重载方法.newConcurrentHashSet()的重载方法.newTre ...

  8. python open 追加

    今天操作失误,导致home目录没空间了,结果跑了3天的程序断了,还好代码可以重新运行. 读写的文件使用追加方式: # a # 打开一个文件用于追加(只写),写入内容为str # 如果该文件已存在,文件 ...

  9. vim在插入模式粘贴代码缩进问题解决方法

    转载自:https://blog.csdn.net/commshare/article/details/6215088 在vim粘贴代码会出现缩进问题,原因在于vim在代码粘贴时会自动缩进 解决方法: ...

  10. Hadoop学习之路(二十六)MapReduce的API使用(三)

    影评案例 数据及需求 数据格式 movies.dat 3884条数据 1::Toy Story (1995)::Animation|Children's|Comedy 2::Jumanji (1995 ...