1[1].2.makefile使用.Linux下编译与调试

1[1].2.makefile使用.Linux下编译与调试

ID:40665342

大小:41.50 KB

页数:5页

时间:2019-08-05

1[1].2.makefile使用.Linux下编译与调试_第1页
1[1].2.makefile使用.Linux下编译与调试_第2页
1[1].2.makefile使用.Linux下编译与调试_第3页
1[1].2.makefile使用.Linux下编译与调试_第4页
1[1].2.makefile使用.Linux下编译与调试_第5页
资源描述:

《1[1].2.makefile使用.Linux下编译与调试》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、LINUX下编译与调试-makefile使用【ITjob课程资料】makefile基本过程处理makefile的工作过程为:先将需要编译连接的c/c++源文件组织到文件makefile中,接着运行make程序,make程序读取当前文件夹下面的makefile文件信息,并根据makefile里面的组织信息,调用相应的gcc/g++/shell等程序,完成对源文件的批量编译和连接。要写makefile文件,首页必须清楚目标文件和依赖文件的概念。通常情况下,目标文件和依赖文件都是指实际的文件。例如,有makefile文件(注意文件

2、名称就是makefile),内容如下:main.exe:main.ofunc.og++-omain.exemain.ofunc.omain.o:main.cppg++-cmain.cppfunc.o:func.cppg++-cfunc.cpp下面我们分析一下这段代码:文件第一行中的文件main.exe称为目标文件(入口),冒号后面以空格分隔的两个文件称为main.exe的依赖文件。意思是文件main.exe的产生依赖于文件main.o和func.o同样道理:第3行的main.o为目标文件(入口),main.cpp为main.

3、o的依赖文件第5行的func.o为目标文件(入口),func.cpp为func.o的依赖文件.文件第2行(以tab开头)表示要产生第1行的目标文件需要执行的命令。对于该makefile文件,程序make处理过程如下:下面我们把所有的*.o和*.exe全部删除。执行:#:make则系统会自动生成main.exe,main.o,func.o它们的执行原理如下:make程序首先找到第一个main.exe入口,找到它的两个依赖文件main.o和func.o;通过main.o,找到main.o的入口,发现没有main.o文件,则执行下

4、面g++-cmain.cpp同样,找到func.o的入口,发现没有func.o文件,则执行下面的g++-cfunc.cpp然后判断main.exe文件存在不存在,如果不存在,则执行g++-omain.exemain.ofunc.o。下面我们更改一下func.cpp文件,则处理过程如下:make程序首先找到第一个main.exe入口,判断它的两个依赖文件main.o和func.o;通过main.o,找到main.o的入口,发现存在main.o文件,则比较main.o的时间与main.cpp,如果发现main.o比main.cp

5、p旧,则执行下面g++-cmain.cpp同样,找到func.o的入口,发现存在func.o文件,则比较func.o的时间与func.cpp,如果发现func.o比func.cpp旧,则执行下面的g++-cfunc.cpp然后判断main.exe,如果main.exe文件存在,则判断main.exe文件的时间,如果比main.o和func.o中的任何一个旧,则执行g++-omain.exemain.ofunc.o。rebuild的制作main.exe:main.ofunc.og++-omain.exemain.ofunc.o

6、main.o:main.cppg++-cmain.cppfunc.o:func.cppg++-cfunc.cpprebuild:cleanmain.execlean:rm*.o*.exe执行makeclean将清除掉文件夹中的二进制可执行文件执行makerebuild则先执行清除,再重新编译连接。注意:执行完makeclean之后再次执行makerebuild会出错,除非再次执行make,或者makemain.exe。带头文件的makefile增加头文件func.hintMyFunc();main.cpp修改为:#inclu

7、de#include"func.h"intmain(){#ifdef_DEBUGprintf("DebugMyFuncis:%d",MyFunc());#elseprintf("NDEBUGMyFuncis:%d",MyFunc());#endifreturn0;}func.cpp修改为:#include"func.h"intMyFunc(){return123;}则makefile多了头文件的文件依赖,makefile文件如下:main.exe:main.ofunc.og++-omain.exe*

8、.omain.o:main.cppfunc.hg++-cmain.cppfunc.o:func.cppfunc.hg++-cfunc.cpprebuild:cleanmain.execlean:rm*.o*.exe命名不同的makefile文件如果makefile不是默认的名称,则使用命令

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

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

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