makefile 中 .dep 用法 -回复
sc6531 Build_Environment_Manual
Build环境使用手册Version: 0.2.62010-11-29修订历史重要声明版权声明本文档中的任何内容受《中华人民共和国著作权法》的保护,版权所有 © 2006, 展讯通信有限公司,保留所有权利,但注明引用其他方的内容除外。
商标声明本文档中展讯通信有限公司的产品的所有商标是展讯通信有限公司专有,但注明属于其他公司拥有的商标除外。
在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。
不作保证声明展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。
保密声明本文档(包括任何附件)包含的信息是保密信息。
接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。
目录1说明 (6)2编译环境及相关软件 (7)3Source Code目录结构 (8)4基本编译命令 (10)4.1全新编译整个项目[new] (10)4.2更新项目[update] (11)4.3单独编译模块 (11)4.4清除模块编译结果 (11)4.5清除所有编译结果[cleanall] (11)4.6生成可执行文件 (11)4.7编译FDL/bootloader (11)4.8编译NV (11)4.9编译MMI Resource 文件 (12)4.10编译PC模拟器工程 (12)5其它编译命令 (15)5.1编译Logel工具 (15)5.2pclint 扫描 (15)5.3编译完成net send提醒功能 (15)5.4编译命令的简写 (15)5.5多线程编译 (15)5.6分布式编译 (16)5.7编译出错暂停 (16)5.8生成编译选项 (16)6Makefile 工作流程 (17)6.1重要脚本 (17)6.2Makefile 执行流程 (18)6.3两种编译方式 (19)7模块修改及项目定制 (21)7.1添加或删除模块 (21)7.2修改模块 (21)7.3创建新项目 (22)7.4修改项目Feature Options (23)8第三方编译选项说明 (24)9相关使用技巧 (25)9.1查看log文件 (25)9.2makefile 报错: No rule to make target ` XXX ', needed by `yyy'. (25)9.3makefile 报错:Can't return outside a subroutine at ./make/perl_script/sprd_macro_check.pl line XXX (25)9.4Source Insight集成ClearCase的配置 (25)9.5Source Insight 中 Pclint 扫描结果相关文件的快速定位 (28)9.6鼠标右键命令行快捷方式设置 (29)9.7DOS下输入命令时用Tab键进行命令自动填充 (29)1 说明Build环境中实现了项目开发和维护使用的GNU标准应用脚本,基于这些应用脚本和相关make工具, Build环境可以完成项目全部代码的编译和二进制文件的生成,同时在此环境中可以通过脚本执行的方式产生其他软件以及开发工具,如 fdl, bootloader, nv_parameter,resource等。
makefile 中 .dep 用法
makefile 中 .dep 用法Makefile是一种常用的自动化构建工具,用于管理软件项目的编译和链接过程。
在Makefile中,.dep是一个特殊的文件,用于记录编译过程中生成的目标文件、依赖关系等信息。
下面介绍Makefile中.dep的用法。
一、.dep文件的作用.dep文件是Makefile自动生成的,用于记录编译过程中的依赖关系和目标文件信息。
在Makefile中,目标文件(target)依赖于源文件(source),当源文件发生变化时,目标文件需要重新编译。
.dep文件记录了这些依赖关系,方便后续的构建过程。
二、.dep文件的生成Makefile会根据源文件和目标文件的依赖关系自动生成.dep文件。
当源文件发生变化时,Makefile会重新编译目标文件,并生成新的.dep文件。
在Makefile中,可以使用$(wildcard)函数和$(if)函数来检查源文件的变动情况,并生成相应的.dep文件。
三、.dep文件的用法在Makefile中,可以使用$(.FORCE)规则来强制执行某些目标文件的构建,并自动生成.dep文件。
$(.FORCE)规则会在目标文件未被构建或依赖的.dep文件不存在时触发执行。
通过使用$(.FORCE)规则,可以确保目标文件的正确构建,并自动生成所需的.dep文件。
四、注意事项在使用.dep文件时,需要注意以下几点:1..dep文件只记录了源文件和目标文件的依赖关系,不包含具体的编译指令。
Makefile会根据源文件和目标文件的依赖关系自动生成编译指令。
2.在使用.dep文件时,需要确保源文件的变动会被正确检测到,否则.dep文件可能不准确。
可以使用$(wildcard)函数和$(if)函数来检测源文件的变动情况。
3.在Makefile中使用$(.FORCE)规则时,需要确保目标文件的构建顺序正确,否则可能会导致构建失败。
综上所述,.dep文件是Makefile中一个重要的工具,用于记录编译过程中的依赖关系和目标文件信息。
mkimage制作linux内核映像uImage文件
如何用mkimage制作linux内核映像uImage文件(这个chomper是高手)bootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的,什么叫做经过u-boot的工具mkimage打包后的kernel image,这个就要看mkimage的代码,看看它做了些什么,虽然我很希望大家不要偷懒,认真地去看看,但是我知道还是有很多人懒得去做这件,那么我就j将分析mkimage代码后得到的总结告诉大家,mkimage做了些什么,怎么用这个工具。
mkimage的用法uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。
mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,入口点在内存的那个位置以及映象名是什么root@Glym:/tftpboot# ./mkimageUsage: ./mkimage -l image-l ==> list image header information./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -ddata_file[:data_file...] image-A ==> set architecture to 'arch'-O ==> set operating system to 'os'-T ==> set image type to 'type'-C ==> set compression type 'comp'-a ==> set load address to 'addr' (hex)-e ==> set entry point to 'ep' (hex)-n ==> set image name to 'name'-d ==> use image data from 'datafile'-x ==> set XIP (execute in place)参数说明:-A 指定CPU的体系结构:取值表示的体系结构alpha Alphaarm ARMx86 Intel x86ia64 IA64mips MIPSmips64 MIPS 64 Bitppc PowerPCs390 IBM S390shSuperHsparc SPARCsparc64 SPARC 64 Bitm68k MC68000-O 指定操作系统类型,可以取以下值:openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos-T 指定映象类型,可以取以下值:standalone、kernel、ramdisk、multi、firmware、script、filesystem-C 指定映象压缩方式,可以取以下值:none 不压缩gzip用gzip的压缩方式bzip2 用bzip2的压缩方式-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage 制作映象时,这个参数所指定的地址值来下载-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)-n 指定映象名-d 指定制作映象的源文件mkimage解压内核源码包,编辑Makefile设置cross_compile:=[编译器的绝对路径] ;这个绝对路径既上面2.95.3放到的路径进入内核文件夹,执行下面命令[root@hostname]# make clean[root@hostname]# make dep[root@hostname]# make[root@hostname]# [编译器的绝对路径]/bin/arm-linux-objcopy -O binary -S vmlinuxlinux.bin ;编译器的绝对路径也是上面说到的路径[root@hostname]# gziplinux.bin下面的比较重要了,主要是u-boot的安装,这个在H9200的手册上说的很不清楚[root@hostname]# tar xzvf u-boot-1.0.0.tar.gz ;解压u-boot[root@hostname]# cd u-boot-1.0.0[root@hostname]# make distclean[root@hostname]# make at91rm9200dk_config[root@hostname]# make all然后在/usr/local下建立uboot文件夹将u-boot-1.0.0下的所有文件都复制到uboot下[root@hostname]# [uboot的绝对路径]/tools/mkimage -A arm -O linux -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage ;这里的绝对路径是/usr/local/ubootvmlinuxlinux.bin linux.bin.gz uImage(uboot制作的image)mkimage -a -e-a参数后是内核的运行地址,-e参数后是入口地址。
Chap嵌入式Linux应用程序开发
(3)拷贝BootLoader阶段2的代码到RAM空间中。
(4)设置好堆栈。
(5)跳转到阶段2的C程序入口点。
第15页/共30页
• BootLoader的阶段2通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和 可移植性。通常包括以下步骤:
第3页/共30页
简单验证交叉编译工具
• 首先用文字输入软件建立一个helloworld.c文件: • #include <stdio.h> • int main(void) •{ • printf("hello world\n"); • return 0; •} • 然后在命令行执行: • $arm-linux-gcc helloworld.c -o helloworld • $file helloworld • 如果输出以下信息,说明成功建立了编译工具。 • helloworld: ELF 32-
系统移植实际上是一个最小系统的重建过 程。,在此使用目标平台上的二进制代码生成 这个最小系统。包括:init、libc库、驱动模块、 必需的应用程序和系统配置脚本。一旦这些工 作完成,移植工作就进入联调阶段了。
bit LSB executable, ARM, version 1, dynamically linke d (uses shared libs), not stripped
第4页/共30页
5.2 Linux及开发工具的使用
GNU工具的开发流程如下: 编写C、C++语言或汇编源程序,用gcc或g++生成目标文件, 编写链接脚本文件,用链接器生成最终目标文件(elf格式), 用二进制转换工具生成可下载的二进制代码。
makefile经典文档试译
注意 -- 隐藏规则是在早期的make里面手动编写的。一共有两类隐含的规则:后缀名式和模式匹配式。对于与另一个文件有相同的名字不过后缀名不同的文件来说,后缀 式规则对它们指明了一系列的命令根据这个后缀名来编译这个文件。模式匹配规则则是根据一个与依赖性与wild-card模式相匹配的目标来选择编译规则。 这样的隐含规则在默认情况下是后缀名规则。在一些情况下,使用后缀名规则可以消除编写一整个makefile文件的麻烦
在下一个例子中,batch目标没有生成文件,取而代之的,它被用作一个组织一组目标的标签。
batch: a b ca: a1 a2touch ab:touch bc:touch ca1:touch a1a2:touch a2在这种情况下,目标们按以下的顺序并处理被检查并被处理:batcha b ca1 a2
make可以让你对编译的内容跟编译的方法写一个简单而且结构化的列表。它使用了一种依赖性检查机制来比较源文件或由源文件得到的中间文件的模块。make只在当一个或多个这样的被称做依赖性文件的前提文件在上一次编译之后被更改之后重新编译这些模块。
句法分析工具指南(parser guideline)
PARSER GUIDELINES tanford parser一个简易的Stanford parser系统只需要包含四类文件,它们分别是:①java包(最新版本为stanford-parser-2011-04-20.jar)、②模板(英文:englishFactored.ser.gz/englishPCFG.ser.gz/wsjFactored.ser.gz/wsjPCFG.ser.gz。
中文:chinesePCFG.ser.gz /chineseFactored.ser.gz/xinhuaFactored.ser.gz/xinhuaPCFG.ser.gz)、③输入文件(一般为.txt后缀的分词文件(、④输出文件(一般为.parse后缀的成分句法树文件或是以.dep 后缀的依存句法树文件)1.英文句法分析举例:Java -mx1g -cp stanford-parser-2011-04-20.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser -maxLength 100 –outputFormat oneline -sentences newline -outputFormatOptions removeTopBracket englishFactored.ser.gz input.txt > output.std_Factored_parse参数解释:①-mx1g:给java虚拟机分配的最大内存为1g(大小可自行设置)。
②-cp :为了加载java包stanford-parser-2011-04-20.jar。
LexicalizedParser:parser类.③-maxLength:指定句子单词长度最大为100。
④–outputFormat:指定输出句子的格式。
outputFormat具体选项值如下:Oneline:成分句法分析输出文件的格式为每行一句的广义表形式的树结构。
展讯平台开发说明
Build环境使用手册Version: 0.2.52010-10-14修订历史重要声明版权声明本文档中的任何内容受《中华人民共和国著作权法》的保护,版权所有© 2006, 展讯通信有限公司,保留所有权利,但注明引用其他方的内容除外。
商标声明本文档中展讯通信有限公司的产品的所有商标是展讯通信有限公司专有,但注明属于其他公司拥有的商标除外。
在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。
不作保证声明展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。
保密声明本文档(包括任何附件)包含的信息是保密信息。
接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。
目录1说明 (6)2编译环境及相关软件 (7)3Source Code目录结构 (8)4基本编译命令 (10)4.1全新编译整个项目[new] (10)4.2更新项目[update] (11)4.3单独编译模块 (11)4.4清除模块编译结果 (11)4.5清除所有编译结果[cleanall] (11)4.6生成可执行文件 (11)4.7编译FDL/bootloader (11)4.8编译NV (11)4.9编译MMI Resource 文件 (12)4.10编译PC模拟器工程 (12)5其它编译命令 (15)5.1编译Logel工具 (15)5.2pclint 扫描 (15)5.3编译完成net send提醒功能 (15)5.4编译命令的简写 (15)5.5多线程编译 (15)5.6分布式编译 (16)5.7编译出错暂停 (16)5.8生成编译选项 (16)6Makefile 工作流程 (17)6.1重要脚本 (17)6.2Makefile 执行流程 (18)6.3两种编译方式 (19)7模块修改及项目定制 (21)7.1添加或删除模块 (21)7.2修改模块 (21)7.3创建新项目 (22)7.4修改项目Feature Options (23)8第三方编译选项说明 (24)9相关使用技巧 (25)9.1查看log文件 (25)9.2makefile 报错:No rule to make target ` XXX ', needed by `yyy'. (25)9.3makefile 报错:Can't return outside a subroutine at ./make/perl_script/sprd_macro_check.pl line XXX (25)9.4Source Insight和ClearCase配置 (25)9.5鼠标右键命令行快捷方式设置 (28)9.6DOS下输入命令时用Tab键进行命令自动填充 (28)1 说明Build环境中实现了项目开发和维护使用的GNU标准应用脚本,基于这些应用脚本和相关make工具,Build环境可以完成项目全部代码的编译和二进制文件的生成,同时在此环境中可以通过脚本执行的方式产生其他软件以及开发工具,如fdl, bootloader, nv_parameter,resource等。
deb编译构建指南
deb编译构建指南deb仓库同步工具 apt-mirror基本配置:/etc/apt/mirror.list############# config #################### set base_path /var/spool/apt-mirror## set mirror_path $base_path/mirror# set skel_path $base_path/skel# set var_path $base_path/var# set cleanscript $var_path/clean.sh# set defaultarch <running host architecture># set postmirror_script $var_path/postmirror.sh# set run_postmirror 0set base_path /data/upstream/set mirror_path $base_path/mirrorset skel_path $base_path/skelset var_path $base_path/varset nthreads 20set run_postmirror 0############# end config ##############deb /ubuntu precise-security main restricted universe multiversedeb-src /ubuntu precise-securitymain restricted universe multiverse结合crond 每天自动同步/etc/cron.d/apt-mirror0 1 * * * root /usr/bin/apt-mirror &> /data/log/cron.log & 软件包编译apt-get install build-essential dpkg-dev dh-make debhelper dpkg-signgcc GNU C语言编译器g++ GNU C++语言编译器make GNU自动化构建工具autotools autoconf automake 工具集dpkg-dev 这个软件包包括了在解开、制作、上传Debian源文件包时需要用到的工具diff/patch 源码补丁制作与补丁管理工具fakeroot 模拟变成root用户,这在创建软件包的过程的一些部分是必要的dh-make 提供了我们需要用到的 dh_make 命令,用于根据上游tarball生成我们deb包模板debhelper 包含dh开头的命令集合,主要用于简化rules文件的编写,把一些通用,重复的操作用perl命令来代替。
mkimage制作linux内核映像uImage文件
如何用mkimage制作linux内核映像uImage文件(这个chomper是高手)bootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的,什么叫做经过u-boot的工具mkimage打包后的kernel image,这个就要看mkimage的代码,看看它做了些什么,虽然我很希望大家不要偷懒,认真地去看看,但是我知道还是有很多人懒得去做这件,那么我就j将分析mkimage代码后得到的总结告诉大家,mkimage做了些什么,怎么用这个工具。
mkimage的用法uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。
mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,入口点在内存的那个位置以及映象名是什么root@Glym:/tftpboot# ./mkimageUsage: ./mkimage -l image-l ==> list image header information./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -ddata_file[:data_file...] image-A ==> set architecture to 'arch'-O ==> set operating system to 'os'-T ==> set image type to 'type'-C ==> set compression type 'comp'-a ==> set load address to 'addr' (hex)-e ==> set entry point to 'ep' (hex)-n ==> set image name to 'name'-d ==> use image data from 'datafile'-x ==> set XIP (execute in place)参数说明:-A 指定CPU的体系结构:取值表示的体系结构alpha Alphaarm ARMx86 Intel x86ia64 IA64mips MIPSmips64 MIPS 64 Bitppc PowerPCs390 IBM S390shSuperHsparc SPARCsparc64 SPARC 64 Bitm68k MC68000-O 指定操作系统类型,可以取以下值:openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos-T 指定映象类型,可以取以下值:standalone、kernel、ramdisk、multi、firmware、script、filesystem-C 指定映象压缩方式,可以取以下值:none 不压缩gzip用gzip的压缩方式bzip2 用bzip2的压缩方式-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage 制作映象时,这个参数所指定的地址值来下载-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)-n 指定映象名-d 指定制作映象的源文件mkimage解压内核源码包,编辑Makefile设置cross_compile:=[编译器的绝对路径] ;这个绝对路径既上面2.95.3放到的路径进入内核文件夹,执行下面命令[root@hostname]# make clean[root@hostname]# make dep[root@hostname]# make[root@hostname]# [编译器的绝对路径]/bin/arm-linux-objcopy -O binary -S vmlinuxlinux.bin ;编译器的绝对路径也是上面说到的路径[root@hostname]# gziplinux.bin下面的比较重要了,主要是u-boot的安装,这个在H9200的手册上说的很不清楚[root@hostname]# tar xzvf u-boot-1.0.0.tar.gz ;解压u-boot[root@hostname]# cd u-boot-1.0.0[root@hostname]# make distclean[root@hostname]# make at91rm9200dk_config[root@hostname]# make all然后在/usr/local下建立uboot文件夹将u-boot-1.0.0下的所有文件都复制到uboot下[root@hostname]# [uboot的绝对路径]/tools/mkimage -A arm -O linux -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage ;这里的绝对路径是/usr/local/ubootvmlinuxlinux.bin linux.bin.gz uImage(uboot制作的image)mkimage -a -e-a参数后是内核的运行地址,-e参数后是入口地址。
GCC与MinGW的简单安装与使用
编译时使用优化
gcc -O2 -c yours.c -o yours.o
使用优化方式编译程序,其中除了-O2以外,还有-O3 -O1等等。他们代表不同的优化等级。最常用的,是-O2优化。当然,还有针对特殊CPU的优化,这里就不介绍了。
编译时显示所有错误和警告信息
GCC与MinGW的简单安装与使用
分类: C MinGW GCC 编译器 2011-11-02 15:22 6122人阅读 评论(0) 收藏 举报
gccmakefile编译器汇编wildcardpath
注:本文通过互联网收集整理。
简单的GCC用法
总的来说,gcc应该是一个编译器。但整套的gcc环境并不是由gcc构成的,它是由多个包所组成的,这些包的互相作用产生了gcc的开发环境。其中,有一些包是你开发应用程序所必备的基本包,离开这些包你将无法正常使用gcc。
1. 多个文件一起编译
用法:#gcc testfun.c test.c -o test
作用:将testfun.c和test.c分别编译后链接成test可执行文件。
2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:
#gcc -c testfun.c //将testfun.c编译成testfun.o
gcc -v
如果显示一段GCC的版本信息,说明你安装的MinGW能正常工作了。
第二种方案:自动安装
到/project/下载MinGW-x.x.x.exe。安装过程它会自动从网上下载相应的文件,并自动配置好环境。
编译连接时,加入调试代码
gcc -g -o yours yours.c
正如同VC有debug编译模式一样,gcc也有debug模式。添加了-g 参数编译的可执行程序比普通程序略为大一些,其中添加了一些调试代码。这些代码将被gdb所支持。
mkimage制作linux内核映像uImage文件
如何用mkimage制作linux内核映像uImage文件(这个chomper是高手)bootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的,什么叫做经过u-boot的工具mkimage打包后的kernel image,这个就要看mkimage的代码,看看它做了些什么,虽然我很希望大家不要偷懒,认真地去看看,但是我知道还是有很多人懒得去做这件,那么我就j将分析mkimage代码后得到的总结告诉大家,mkimage做了些什么,怎么用这个工具。
mkimage的用法uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。
mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,入口点在内存的那个位置以及映象名是什么root@Glym:/tftpboot# ./mkimageUsage: ./mkimage -l image-l ==> list image header information./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -ddata_file[:data_file...] image-A ==> set architecture to 'arch'-O ==> set operating system to 'os'-T ==> set image type to 'type'-C ==> set compression type 'comp'-a ==> set load address to 'addr' (hex)-e ==> set entry point to 'ep' (hex)-n ==> set image name to 'name'-d ==> use image data from 'datafile'-x ==> set XIP (execute in place)参数说明:-A 指定CPU的体系结构:取值表示的体系结构alpha Alphaarm ARMx86 Intel x86ia64 IA64mips MIPSmips64 MIPS 64 Bitppc PowerPCs390 IBM S390shSuperHsparc SPARCsparc64 SPARC 64 Bitm68k MC68000-O 指定操作系统类型,可以取以下值:openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos-T 指定映象类型,可以取以下值:standalone、kernel、ramdisk、multi、firmware、script、filesystem-C 指定映象压缩方式,可以取以下值:none 不压缩gzip用gzip的压缩方式bzip2 用bzip2的压缩方式-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage 制作映象时,这个参数所指定的地址值来下载-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)-n 指定映象名-d 指定制作映象的源文件mkimage解压内核源码包,编辑Makefile设置cross_compile:=[编译器的绝对路径] ;这个绝对路径既上面2.95.3放到的路径进入内核文件夹,执行下面命令[root@hostname]# make clean[root@hostname]# make dep[root@hostname]# make[root@hostname]# [编译器的绝对路径]/bin/arm-linux-objcopy -O binary -S vmlinuxlinux.bin ;编译器的绝对路径也是上面说到的路径[root@hostname]# gziplinux.bin下面的比较重要了,主要是u-boot的安装,这个在H9200的手册上说的很不清楚[root@hostname]# tar xzvf u-boot-1.0.0.tar.gz ;解压u-boot[root@hostname]# cd u-boot-1.0.0[root@hostname]# make distclean[root@hostname]# make at91rm9200dk_config[root@hostname]# make all然后在/usr/local下建立uboot文件夹将u-boot-1.0.0下的所有文件都复制到uboot下[root@hostname]# [uboot的绝对路径]/tools/mkimage -A arm -O linux -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage ;这里的绝对路径是/usr/local/ubootvmlinuxlinux.bin linux.bin.gz uImage(uboot制作的image)mkimage -a -e-a参数后是内核的运行地址,-e参数后是入口地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
makefile 中 .dep 用法-回复
问题:makefile 中 .dep 用法
一、什么是makefile?
makefile 是一种用于自动化构建程序的工具,它告诉make 工具如何编译和链接程序的各个模块。
通过makefile,我们可以定义源代码的依赖关系,并且只重新编译发生改变的源代码文件,从而提高编译效率。
二、makefile 的作用
makefile 的主要作用有以下几个方面:
1. 定义源代码文件之间的依赖关系。
2. 定义编译和链接的规则。
3. 自动化构建程序,只重新编译发生改变的源代码文件。
4. 管理程序的版本控制,使得程序的构建过程可重复性和可扩展性更高。
三、makefile 的基本结构
makefile 由一系列规则组成,每个规则由一个目标、依赖文件和命令组成。
其中,目标指的是要生成的文件,依赖文件指的是生成目标文件所依赖的其他文件,命令指的是执行生成目标文件的具体操作。
四、.dep 文件的作用
.dep 文件是makefile 中一个重要的文件,它用于记录源代码文件之间的依赖关系。
在makefile 构建程序时,会根据 .dep 文件中的内容判断哪些源代码文件需要重新编译。
五、.dep 文件的生成过程
1. 定义 .dep 依赖文件的生成规则。
常用的规则有以下两种:
.dep: .cpp
(CPP) (CPP_FLAGS) -MM < -MF @
或
.cpp.dep:
(CPP) (CPP_FLAGS) -MM < -MF @
2. 定义 .dep 文件的依赖规则。
sources := (wildcard *.cpp)
deps := (patsubst .cpp,.dep,(sources))
all: (deps)
(deps): .dep: .cpp
include (deps)
3. 执行makefile 生成 .dep 文件。
在命令行中执行`make` 命令,make 工具会根据 .dep 文件的规则和源代码文件的依赖关系生成 .dep 文件。
六、.dep 文件的内容和格式
.dep 文件是文本文件,内容格式如下所示:
source.cpp: dependency1.h dependency2.h ...
其中,`source.cpp` 表示源代码文件,`dependency1.h` 和
`dependency2.h` 表示源代码文件所依赖的头文件。
七、.dep 文件的更新过程
1. 源代码文件发生变化时,会触发makefile 的重新构建过程。
2. 重新构建过程中,make 工具会检查 .dep 文件中的依赖关系和已修改的源代码文件。
3. 如果已修改的源代码文件在 .dep 文件中有对应的依赖关系,则表示该源代码文件需要重新编译。
4. make 工具会根据 .dep 文件中的依赖关系和已修改的源代码文件,确定需要重新编译的源代码文件,并执行相应的编译命令。
八、总结
.makefile 是一种用于自动化构建程序的工具,通过定义源代码文件之间的依赖关系,可以实现只重新编译发生改变的源代码文件,提高编译效率。
.dep 文件是makefile 中用于记录源代码文件依赖关系的重要文件,能够在重新构建过程中判断哪些源代码文件需要重新编译。
通过以上的步骤和解释,我们可以更好地理解和使用 .dep 文件在makefile 中的作用。