专门做评测的网站有哪些,医疗器械公司网站备案怎么做,长春 网站 设计,免备案虚拟主机哪家好From: http://www.cnblogs.com/mydomain/archive/2011/08/12/2136083.html
1、make是一个解释makefile中指令的命令工具。Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写#…From: http://www.cnblogs.com/mydomain/archive/2011/08/12/2136083.html
1、make是一个解释makefile中指令的命令工具。Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写文件中需要说明如何编译各个源文件并连接生成可执行文件并要求定义源文件之间的依赖关系。
Makefile 里主要包含了五种类型的语句/行显式规则、隐式规则、变量定义、文件指示和注释。
make命令格式make [-f Makefile] [option] [target]
2、编译和链接规则
1如果这个工程没有编译过那么我们的所有C文件都要编译并被链接。
2如果这个工程的某几个C文件被修改那么我们只编译被修改的C文件并链接目标程序。
3如果这个工程的头文件被改变了那么我们需要编译引用了这几个头文件的C文件并链接目标程序。
3、makefile的构成
1需要由make工具创建的目标体target通常是目标文件或可执行文件。
2要创建的目标体所依赖的文件dependency_file。
3创建每个目标体时需要运行的命令command。
格式如下
targetdependency_files
TABcommand
在这里面变量一般都是字符串他有点像c语言的宏。
makefile中的文件指示包含3部分一个是在一个Makefie中引用另一个Makefile就像c语言的include一样另一个是根据某些情况指定Makefile中的有效部分就像C语言中的预编译#if一样还有就是定义一个多行的命令。
注释注释符用#可以用反斜框进行转义如输入注释“\#”。
4、makefile的书写
1所有文件都在一个目录中
示例
st_work : main.o st_work.o fun.o
gcc main.o st_work.o fun.o -o st_work main (命令以Tab开头)
st_work.o : st_work.c
gcc -c st_work.c -o st_work
main.o : main.c st_work.h
gcc -c main.c -o main.o
fun.o : fun.c fun.h
gcc -c fun.c -o fun.o
clean
rm -f st_work *.o
2多目录的写法
我们这里在工作目录下有4个文件夹 分别是 sources源文件 obj 中间文件headers头文件 bin目标文件
sources里面有 main.c st_work.c fun.c
obj 里面最初没有文件
headers 里面有 fun.h st_work.h
最终目标取名为 st_work它应存放到bin里面
预备知识
gcc 的3个参数
1. -o 指定目标文件
gcc sources/main.c -o bin/main
2. -c 编译的时候只生产目标文件不链接
gcc -c sources/main.c -o obj/main.o
3. -I 主要指定头文件的搜索路径
gcc -I headers -c main.c -o main.o
4. -l 指定静态库
gcc -lpthread ...
示例
bin/st_work : obj/main.o obj/st_work.o obj/fun.o gcc obj/main.o obj/st_work.o obj/fun.o -o bin/st_work (命令以Tab开头)
obj/st_work.o : sources/st_work.c
gcc -I headers -c sources/st_work.c -o obj/st_work.o
obj/main.o : sources/main.c
gcc -I headers -c sources/main.c -o obj/main.o
obj/fun.o : sources/fun.c
gcc -I headers -c sources/fun.c -o obj/fun.o
clean
rm -f bin/st_work obj/*.o
3隐式规则的引入 3个预定义变量介绍
1. $ 表示要生成的目标
2. $^ 表示全部的依赖文件
3. $ 表示第一个依赖文件
bin/st_work : obj/main.o obj/st_work.o obj/fun.o
gcc $^ -o $ (命令一定要用以Tab开头)
obj/st_work.o : sources/st_work.c
gcc -I headers -c $ -o $
obj/main.o : sources/main.c
gcc -I headers -c $ -o $
obj/fun.o : sources/fun.c
gcc -I headers -c $ -o $
clean
rm -f bin/st_work obj/*.o