linux编译驱动之 make modules SUBDIRS

补充:make modules SUBDIRS=指定编译那个目录下的Makefile

今天在编译linux kernel的时候发现make menuconfig中配置成<M>模式的驱动模块没有加入编译之,下面命令编译内核的:

make uImage

通过查看kernel的makefile发些了一些蛛丝马迹,现在将工作笔记记录如下:在linux kernel下运行终端,输入如下命令查看kernel编译相关的一些信息

make help 

Cleaning targets:
  clean           - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper        - Remove all generated files + config + various backup files
  distclean       - mrproper + remove editor backup and patch files

Configuration targets:
  config          - Update current config utilising a line-oriented program
  nconfig         - Update current config utilising a ncurses menu based program
  menuconfig      - Update current config utilising a menu based program
  xconfig         - Update current config utilising a QT based front-end
  gconfig         - Update current config utilising a GTK based front-end
  oldconfig       - Update current config utilising a provided .config as base
  localmodconfig  - Update current config disabling modules not loaded
  localyesconfig  - Update current config converting local mods to core
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps
  defconfig       - New config with default from ARCH supplied defconfig
  savedefconfig   - Save current config as ./defconfig (minimal config)
  allnoconfig     - New config where all options are answered with no
  allyesconfig    - New config where all options are accepted with yes
  allmodconfig    - New config selecting modules when possible
  alldefconfig    - New config with all symbols set to default
  randconfig      - New config with random answer to all options
  listnewconfig   - List new options
  oldnoconfig     - Same as silentoldconfig but set new symbols to n (unset)

Other generic targets:
  all             - Build all targets marked with [*]
* vmlinux         - Build the bare kernel
* modules         - Build all modules
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)
  firmware_install- Install all firmware to INSTALL_FW_PATH
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)
  dir/            - Build all files in dir and below
  dir/file.[oisS] - Build specified target only
  dir/file.lst    - Build specified mixed source/assembly target only
                    (requires a recent binutils and recent build (System.map))
  dir/file.ko     - Build module including final link
  modules_prepare - Set up for building external modules
  tags/TAGS       - Generate tags file for editors
  cscope          - Generate cscope index
  gtags           - Generate GNU GLOBAL index
  kernelrelease   - Output the release version string
  kernelversion   - Output the version stored in Makefile
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH
                    (default: /home/book/workspace/kernel/linux-3.4.2_jz2440/usr)

Static analysers
  checkstack      - Generate a list of stack hogs
  namespacecheck  - Name space analysis on compiled kernel
  versioncheck    - Sanity check on version.h usage
  includecheck    - Check for duplicate included header files
  export_report   - List the usages of all exported symbols
  headers_check   - Sanity check on exported headers
  headerdep       - Detect inclusion cycles in headers
  coccicheck      - Check with Coccinelle.

Kernel packaging:
  rpm-pkg             - Build both source and binary RPM kernel packages
  binrpm-pkg          - Build only the binary kernel package
  deb-pkg             - Build the kernel as a deb package
  tar-pkg             - Build the kernel as an uncompressed tarball
  targz-pkg           - Build the kernel as a gzip compressed tarball
  tarbz2-pkg          - Build the kernel as a bzip2 compressed tarball
  tarxz-pkg           - Build the kernel as a xz compressed tarball
  perf-tar-src-pkg    - Build perf-3.4.2.tar source tarball
  perf-targz-src-pkg  - Build perf-3.4.2.tar.gz source tarball
  perf-tarbz2-src-pkg - Build perf-3.4.2.tar.bz2 source tarball
  perf-tarxz-src-pkg  - Build perf-3.4.2.tar.xz source tarball

Documentation targets:
 Linux kernel internal documentation in different formats:
  htmldocs        - HTML
  pdfdocs         - PDF
  psdocs          - Postscript
  xmldocs         - XML DocBook
  mandocs         - man pages
  installmandocs  - install man pages generated by mandocs
  cleandocs       - clean all generated DocBook files

Architecture specific targets (arm):
* zImage        - Compressed kernel image (arch/arm/boot/zImage)
  Image         - Uncompressed kernel image (arch/arm/boot/Image)
* xipImage      - XIP kernel image, if configured (arch/arm/boot/xipImage)
  uImage        - U-Boot wrapped zImage
  bootpImage    - Combined zImage and initial RAM disk
                  (supply initrd image via make variable INITRD=<path>)
  dtbs          - Build device tree blobs for enabled boards
  install       - Install uncompressed kernel
  zinstall      - Install compressed kernel
  uinstall      - Install U-Boot wrapped compressed kernel
                  Install using (your) ~/bin/installkernel or
                  (distribution) /sbin/installkernel or
                  install to $(INSTALL_PATH) and run lilo

发现并没有把make menuconfig中配置成<M>模式的驱动模块没有加入编译,分析才发现还得执行如下命令就OK了。

make modules

相关的*.ko驱动模块就在kernel目录下!

时间: 2024-10-03 19:15:09

linux编译驱动之 make modules SUBDIRS的相关文章

linux 编译内核时网卡驱动丢失如何解决

我的系统 OS version : Centos 5.9 kernel : 2.6.18-402 更新内核版本: 2.6.20 由于 yum 里面的内核头文件和卡发包并没有过多的源码 .c 文件.所以只能从 www.kernel.org 下载 相近的版本,有人肯定说了下你还不下个最新的 内核版本,答: 如内核版本跨度比较大,本人担心会出现各种问题,很多老的编译选项新版内核不支持. 首先先下载 原系统的 开发包和头文件:shell $> yum install kernel-devel kerne

《Linux设备驱动开发详解 A》一一1.5 Linux设备驱动的开发环境构建

1.5 Linux设备驱动的开发环境构建 1.5.1 PC上的Linux环境 本书配套资源提供了一个Ubuntu的VirtualBox虚拟机映像,该虚拟机上安装了本书涉及的所有源代码.工具链和各种开发工具,读者无须再安装和配置任何环境.该虚拟机可运行于Windows.Ubuntu等操作系统中,运行方法如下. 1)安装VirtualBox. 如果主机为Windows系统,请安装VirtualBox WIN版本: VirtualBox-4.3.20-96997-Win.exe 如果主机为Ubuntu

如何使用ubuntu来编译驱动

一般我们使用的方法是这样的,如果开发板上的内核版本是linux-2.6.30   ,我们ubuntu系统里面也会放一个linux-2.6.30的linux内核,用来交叉编译动态驱动程序,最后加载到开发板上. Makefile编写如下: KERN_DIR =         /* 这里填写你开发板所用的内核版本,放在ubuntu上的绝对路径 */ all:make -C $(KERN_DIR) M=`pwd` modules  clean:make -C $(KERN_DIR) M=`pwd` m

Linux USB驱动框架分析【转】

转自:http://blog.csdn.net/jeffade/article/details/7701431 Linux USB驱动框架分析(一) 初次接触和OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了.好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动研发.但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货.当然,还会顺带提一下其他的驱动程式写法. 事实上,Linux的设备驱动都遵循一个

Linux Platform驱动模型(二) _驱动方法【转】

转自:http://www.cnblogs.com/xiaojiang1025/archive/2017/02/06/6367910.html 在Linux设备树语法详解和Linux Platform驱动模型(一) _设备信息中我们讨论了设备信息的写法,本文主要讨论平台总线中另外一部分-驱动方法,将试图回答下面几个问题: 如何填充platform_driver对象? 如何将驱动方法对象注册到平台总线中? 正文前的一点罗嗦 写驱动也有一段时间了,可以发现,其实驱动本质上只做了两件事:向上提供接口,

Linux主机驱动与外设驱动分离思想

1主机.外设驱动分离的意义 在Linux设备驱动框架的设计中,除了有分层设计实现以外,还有分隔的思想.举一个简单的例子,假设我们要通过SPI总线访问某外设,在这个访问过程中,要通过操作CPU XXX上的SPI控制器的寄存器来达到访问SPI外设YYY的目的,最简单的方法是: return_type xxx_write_spi_yyy(...) { xxx_write_spi_host_ctrl_reg(ctrl); xxx_ write_spi_host_data_reg(buf); while(

系统-LINUX网卡驱动修改(ath9k驱动),求救!!

问题描述 LINUX网卡驱动修改(ath9k驱动),求救!! 小弟现在做一个任务,需要跳过网卡驱动的协议栈,直接通过射频发送数据,不知如何修改? 网卡是AR9285,系统是LINUX,驱动为ATH9K. 不知各位高人有何指教? 解决方案 我最近也在做这块,请问解决了吗

流媒体04:VLC2.2.1的Linux编译及调试

Windows环境下编译的VLC或通过Linux交叉编译的VLC,调试起来非常麻烦,之前的51CTO的博客写过老版本的VLC的调试,改动太多,速度也很慢,故新版本并没有继续在类似环境下继续折腾VLC的调试.偶然发现Ubuntu下直接编译VLC很快很好很方便,而且配合GDB调试只要加一条指令即可. 另外,配合QT Creator,在IDE中设置断点,读取打印变量等都非常的直观. 本文介绍VLC2.2.1的Linux编译,当然,编译的主要目的是:调试. 环境 与交叉编译VLC2.2.1一样的环境,请

《Linux 设备驱动开发详解(第2版)》——1.6 设备驱动Hello World:LED驱动

1.6 设备驱动Hello World:LED驱动 Linux 设备驱动开发详解(第2版)1.6.1 无操作系统时的LED驱动 在嵌入式系统的设计中,LED一般直接由CPU的GPIO(通用可编程I/O口)控制.GPIO一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器.控制寄存器可设置GPIO口的工作方式为输入或是输出.当引脚被设置为输出时,向数据寄存器的对应位写入1和0会分别在引脚上产生高电平和低电平:当引脚设置为输入时,读取数据寄存器的对应位可获得引脚上的电平为高或低. 在本例子中,我们