
MAKE
文章平均质量分 81
unbutun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
调试makefile
一个调试makefile文件的简便方法:那就是用make -p|tee make.out来输出make运行过程中产生的中间信息。make -n 就可以输出调试 make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又转载 2009-08-20 22:22:00 · 7273 阅读 · 0 评论 -
Makefile 简明手册
一个完整的 Makefile 通常由 "显式规则"、"隐式规则"、"变量定义"、"指示符"、"注释" 五部分组成。 显式规则: 描述了在何种情况下如何更新一个或多个目标文件。隐式规则: make 默认创建目标文件的规则。(可重写)变量定义: 类似 shell 变量或 C 宏,用一个简短名称代表一段文本。指示符: 包括包含(include)、条件执行、宏定义(多行变量)等内容。转载 2011-06-28 21:55:00 · 1386 阅读 · 0 评论 -
Linux内核构建系统之九
<br />yihect | 11 元月, 2011 15:28<br />这个系列的上一片文章介绍了为讲述构建目标而举的第一个例子:"make ARCH=arm CROSS_COMPILE=arm-linux-"。接下来,让我们来看看另外一个例子,也就是编译外部模块的命令:"make ARCH=arm CROSS_COMPILE=arm-linux- -C KERNELDIR M=dir"。<br />关于包含在该命令中的两个选项 "-C" 和 "M",我们在前面已经有所介绍了。"-C"用来使make工具转载 2011-05-25 21:33:00 · 945 阅读 · 0 评论 -
Linux内核构建系统之七
<br />yihect | 11 元月, 2011 09:39<br />通过前面的分析,我们已经知道,在 Linux 中,区分有两种模块:内部模块和外部模块。我们这里说的对目标 modules 的处理指的就是要编译出那些内部模块,对外部模块的处理我们将在后面叙述。我们还知道,不管是内部模块,还是外部模块,其编译都要分两个阶段进行。阶段一生成组成模块的对应 .o 文件和 .mod 文件,阶段二要用 scripts/mod/modpost 来生成 .mod.c 文件,并将其编译成 .mod.o 对象文件,最转载 2011-05-25 21:31:00 · 2706 阅读 · 0 评论 -
Linux内核构建系统之四
<br />yihect | 09 元月, 2011 10:47<br />回到我们的主框架上面来,讨论完配置目标的处理后,就轮到框架中 "ifeq ($(config-targets),1)-endif" 块的 else 部分了。这部分是为了处理那些构建目标以及和.config无关的目标,其对这些目标处理的代码都位于框架中的E部分中。在E部分之前,有一个不小的 "ifeq ($(dot-config),1)-endif" 块,我们暂先不去理会,且看这个 ifeq-endif 块之前有一小段注释:<br /转载 2011-05-25 21:28:00 · 1310 阅读 · 0 评论 -
Linux内核构建系统之三
<br />yihect | 09 元月, 2011 09:52<br />顶层Makefile的总体框架结构 <br />既然前面我们说过顶层Makefile最为重要,那么我们就先来研究一下这个文件。在你用VI编辑器打开这个文件时,千万别被它的复杂吓倒。这个文件虽然行数颇多,但其实里面也是有道道可寻的,我们可以抽出其中最重要的框架结构出来,列出如下(稍做整理和缩进):<br />从上面的框架中可以看出,影响内核构建过程动作的有数个变量,分别是:KBUILD_SRC, KBUILD_OUTPUT, ski转载 2011-05-25 21:27:00 · 1222 阅读 · 0 评论 -
Linux内核构建系统之五
<br />yihect | 09 元月, 2011 10:52<br />对另外构建目标的处理,我们使用两个例子来讲述,那就是配置内核后用来编译内核的命令:"make ARCH=arm CROSS_COMPILE=arm-linux- "和编译外部模块的命令:"make ARCH=arm CROSS_COMPILE=arm-linux- -C KERNELDIR M=dir"。之所以选取这两个 make命令 来作为例子讲述,是因为它所涉及到的关于构建系统的知识比较多,覆盖比较完整。<br />在开始着手讲转载 2011-05-25 21:29:00 · 1365 阅读 · 0 评论 -
Linux内核构建系统之十
yihect | 11 元月, 2011 16:13到目前为止,内核构建系统的大部分重要的地方都已讨论完毕,惟独有一个很关键的方面还没讨论完全,那就是依赖关系的处理。熟悉Linux内应用程序开发的人都知道,要想用 make 工具来自动化的管理他们的应用项目工程,就必须正确处理所要编译的目标和生成这些目标所需文件之间的依赖关系。举个例子,比方你要编译一个对象文件 hello.o,那么你就需要告诉 make 工具生成该对象文件所需要的依赖有哪些后,make 才能帮你正确的管理它的编译。这些所依赖的文件通常有可能转载 2011-05-25 21:33:00 · 822 阅读 · 0 评论 -
Linux内核构建系统之八
<br />yihect | 11 元月, 2011 12:59<br />在编译 vmlinux 以及 modules 的过程中,构建系统已经产生了很多输出:vmlinux elf 映像、System.map符号表文件、各种内部模块等等。这些东西是编译支持任何架构的Linux内核过程中都要产生的,但是如果要想真正去使用Linux内核,光用前面产生的 vmlinux 是不行的。因为前面产生的 vmlinux 是一个ELF映像,不能拿来直接执行。这个不像我们平常所开发出来的上层应用程序,比方一个hello程序转载 2011-05-25 21:32:00 · 983 阅读 · 0 评论 -
Linux内核构建系统之六
<br />yihect | 10 元月, 2011 16:38<br />回到处理 vmlinux 的那条规则上面来,在处理好 $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main)等目标后,构建系统接下来要处理的就是 vmlinux.o 和 $(kallsyms.o) 了。<br />内核构建系统之所以要在链接 vmlinux 之前,去链接出vmlinux.o。其原因并不是要将 vmlinux.o 链接进 vmlinux,而是要在链接 vmlinux.o 的过程中做转载 2011-05-25 21:30:00 · 1865 阅读 · 0 评论 -
一个精简内核配置的方法 (感谢 flw2 兄分享)
如果经常编译新内核(不管是什么目的), 或者需要修改内核的某些代码做测试,虽然make会选择的编译有必要重新编译的部分,但是如果修改了某个核心的头文件可能需要重新编译很多内容所以把不需要使用的模块不编译是能节省不少时间的编译内核大部分时间都在编译模块上, 比如我的机器:find /lib/modules/2.6.37-rc5+/ -name "*.ko"|wc -l2374我的目标就是删除这些不用的模块, 不是显示的删除不用的模块,而是提取出需要的模块如果系统连续运行足够长的时间,现在被加载的就是需要的,否转载 2011-02-20 19:28:00 · 737 阅读 · 0 评论 -
Linux内核构建系统之一
<br />yihect | 17 十二月, 2010 15:25<br />要想学习Linux内核,特别是要想通过去hacking内核代码来找到您手头问题的答案,那你通常就需要先有一些基础知识,包括操作系统的原理、实际hacking所需要的工具使用、Linux内核构建系统的基本转载 2011-05-25 21:24:00 · 1407 阅读 · 1 评论