Makefile
2015-10-25 10:19
281 查看
Makefile
Makefile is used to tell the compiler how to compile and link the source file.structure
Makefile is organized by some rules:target:prerequisites
commands
target stands for a object file or a exxcutable file,sometime it just stands for label.
prerequisites stand for the files that used to produce the target
commands stand for shell commands
this rule is used to describe the dependency relation between target and prerequisites.for example,if everything in prerequisites is is not modified,when you execute the make command,nothing happened.if some files in prerequisites are modified lately,when you execute the make command.the modified files will be compiled agian,then linked.
ob1.o:ob1.c ob1.h
g++ -c ob1.c
ob2.o:ob2.c ob2.h
g++ -c ob2.c
ob3.o:ob3.c ob3.h
g++ -c ob3.c
main:ob1.o ob2.o ob3.o
g++ -o main ob1.o ob2.o ob3.o
the symbol in Makefile
$@ : the target$^ : the prerequisites
$< : the first file in prerequisites
/ : line feed
so when you see Makefile lines like:
main: ob1.o ob2.o ob3.o
g++ -o @@ ^
it’s means that the compiler linked all the object files to produce a executable file named main.
introduce to g++
options-c : produce a object file
-Idir :inlcude head dir,the compiler is going to find the head file in the path you select,if not find ,the compiler will find the head file in a system default path.
-Ldir:the options tell the compiler where to find the libary that used to compiler the source.
-llibrary: the library that used to compile.
-Wall : tell the compiler to output all the warning message
-w : tell the compiler to close all the warning message
-Dmacro=defn :define a macro
-ON,N=0,1,2,3 when you need debug the source code,you need to disable the compiler’s optimization function by adding a option -O0,actully ,there is four level optimization option -O0,1,2,3,-O0 tell the compiler disable the optimization function ,and the -ON,N=1,2,3 tell the comipler optimize even more.
-g this flag tells comipler to keep the debug infomation.it’s necessary for the debug step.
相关文章推荐
- 一看就会Android之SQLite中事务的使用
- LeetCode 089 Gray Code
- 程序员理想
- 为经典版eclipse增加web and JavaEE插件
- iOS JSON的选项NSJSONReadingMutableLeaves
- HDU3584 Cube
- Android开发手记一 NDK编程实例
- 生命是一场旅程,人生是一个过程。走得越远,去的地方越多,越清楚自己要什么生活。
- bzoj1072: [SCOI2007]排列perm
- pch文件的创建与设置
- [24]Swap Nodes in Pairs
- Spring MVC 如何上传多个文件到指定位置
- iOS中触摸事件响应者链条
- pga_aggregate_target和_pga_max_size都不能绝对限制实际PGA的使用
- 如何识别网页类型(wap页面还是wise页面)
- ios返回圆形图片
- AndroidStudio基础教程
- hadoop 分布式计算开源框架 学习总结
- 线程执行器(一)
- iOS多线程实现3-GCD