makefile 中 .dep 用法 -回复
- 格式:doc
- 大小:14.36 KB
- 文档页数:4
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是一种常用的自动化构建工具,用于管理软件项目的编译和链接过程。
在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文件(这个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参数后是入口地址。
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仓库同步工具 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文件(这个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参数后是入口地址。
如何用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参数后是入口地址。
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 中的作用。