批处理:makefile集成编译
1:默认:执行make————自动查找“makefile”
在Windows下面,.c源程序编译生成.obj目标文件在经过链接生成.exe可执行文件
但是在Linux下面,.c源程序编译生成.o文件
2:声明变量OBJS:(其中vHHV.c与makeframe.c为其中程序包含头文件.h)
OBJS=vHHV.o makeframe.o
CC=gcc //将gcc命令赋给CC
vHHV: $(OBJS)
$(CC) -ovHHV $(OBJS)
vHHV.o: vHHV.c vHHV.h
makeframe: $(OBJS)
$(CC)-o makeframe $(OBJS)
makeframe: makeframe.cmakeframe.h
3:讲很多道理都不如说实例证明(依葫芦画瓢):
建立文件:#vi filename.mk(文件名字可以随意,不过编译时要一致)
OBJS=main.o ReadData.o BrowseData.o
CC=gcc
test:$(OBJS)
$*(CC) -otest $(OBJS) //特别注意本行之前有一个TAB键的空格,一般定义为四个空格键;test为执行文件名,可以任意取名字,编译时保持一致
main.o:main.c
$(CC) -cmain.c //-c中c为小写,本行之前有一个TAB键
ReadData.o:ReadData.c readdata.h
$(CC) -c ReadData.c //注意TAB键空格
BrowseData.o:BrowseData.c browsedata.h
$(CC) -c BrowseData.c //注意TAB键空格
clean:
rm *.o test //**本行前面有一个TAB键空格;本行用与执行删除命令,方便重新编译
1):执行:
#make -f filename.mk
#./test //**test为执行文件名
2):如果要执行clean:
#make -f filename.mkclean //用来清除中间编译文件
会出现rm *.o test
3):在执行批处理的时候,可以更简单的:
#cpfilename.mk makefile
#make
#./test
那么这样运行一次之后,以后就只要用make就行了。
4:为了保护知识产权,可以只给别人中间.o文件,而不给C的源代码,一般人很难反编译
5:如果编译不通过,注意查找源文件的错误,如头文件包含了没有,有没有函数写错,等等,会有提示,
一般是一页错误修改后又有另一页的错误,所以要静下心来找呀,祝好运。
-----2012.11.20