7.Linux编程工具(二)

7.Linux编程工具(二)

ID:41869092

大小:563.50 KB

页数:14页

时间:2019-09-04

7.Linux编程工具(二)_第1页
7.Linux编程工具(二)_第2页
7.Linux编程工具(二)_第3页
7.Linux编程工具(二)_第4页
7.Linux编程工具(二)_第5页
资源描述:

《7.Linux编程工具(二)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第七章Linux编程工具(二)本章目标Makefile工具编写简单的makefile文件Makefile自动化变量多级目录编译方法make工具人们通常利用make工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。Makefilemake工具通过一个称为makefile的文件来完成并自动维护编译工作。makefile需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖

2、关系。当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。Makefile基本规则TARGET…:DEPENDENCIES…COMMAND…目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。Makefile基本规则命令(COMMAND)是make执行的动作,一个可以有多个命令,每个占一行。注意:每个命令行的起始字符必须为TAB字符!如果DEPENDENCIES中有一个或多个文件更新的话,CO

3、MMAND就要执行,这就是Makefile最核心的内容最简单的Makefile例子main:main.oadd.osubtract.ogccmain.oadd.osubtract.o-omainmain.o:main.cadd.hsubtract.hgcc-cmain.c-omain.oadd.o:add.cadd.hgcc-cadd.c-oadd.osubtract.o:subtract.csubtract.hgcc-csubtract.c-osubtract.oclean:rm-fmainmain.oadd.osubtract.oMakefile自动化变量选项名作

4、用$@规则的目标文件名$<规则的第一个依赖文件名$^规则的所有依赖文件列表请演示更复杂的makefile常见伪目标.PHONYallinstallcleanMakefile中常见函数wildcard函数当前目录下匹配模式的文件例如:src=$(wildcard*.c)notdir函数去除路径例如:$(notdir$src)patsubst函数模式匹配替换例如:$(patsubst%.c,%.o,$src)等价于$(src:.c=.o)shell函数执行shell命令例如:$(shellls–d*/)多级目录Makefile(1)在顶层目录中编写一个MakefileCC

5、=gccSUBDIR=$(shellls–d*/)ELF=mainROOTSRC=$(wildcard*.c)ROOTOBJ=$(ROOTSRC:%.c=%.o)SUBSRC=$(shellfind$(SUBDIR)-name'*.c')SUBOBJ=$(SUBSRC:%.c=%.o)$ELF:$(ROOTOBJ)$(SUBOBJ)$(CC)-o$(ELF)$(ROOTOBJ)$(SUBOBJ).c.o:echo$(@D)$(

6、级目录Makefile(2)在各子目录分别编写Makefileinclude各子目录makefileincludemakefile文件名进入各目录进行makemake–C目录名多个makefile间传递变量值export变量名总结VI工具使用Gcc编译原理Gdb调试程序方法Linux库文件和头文件Makefile工具编写简单的makefile文件课后练习封装链表模块模块中涵盖链表的初始化、增删改节点、链表释放功能将链表模块封装成共享库编写测试程序,完成链表共享库的调用和功能验证,并编写Makefile(编译、安装install、清除编译结果clean)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。