makefile之前看过一遍相关的课件,ppt上的例子试了下竟然没有成功。新年加班的第一天,无意之中看到一篇博客,竟然试成功了,今天开了个头其实不难么。,我的例子也来自以下这个博客。(http://blog.chinaunix.net/space.php?uid=25124785&do=blog&id=76670)
------------------------------------------------------------------------------------------------华丽分割------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第一阶段 一个文件的makefile
1.我们要编译的文件为hello.c
#include<stdio.h>
int main()
{
printf("hello");
}
2.在hello.c的同一个目录下(不同目录下是不是也可以?要怎么写,目前还不会),写一个makefile文件
hello:hello.o
gcc -o hello hello.o
hello.o:hello.c
gcc -c hello.c
clean:
rm -f hello.o hello
3.执行 make
4.此时执行可以看到hello已经生成
5.执行hello文件
6.结果如下
注意哦,并不是没有结果,而是结果没有换行。
鉴于这样不方便阅读,以后应该在printf的结尾应该加上“\n”,这也是http://blog.chinaunix.net/space.php?uid=25124785博客中特意注明的地方。
7.修改hello.c
#include<stdio.h>
int main()
{
printf("hello\n");
printf("新年快乐\n");这句话与此次学习无关。^。^
}
好了,这就结束了最简单的makefile,下回再试更复杂一点的。
--------------------------------------------------------------------------华丽分割-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
makefile规则简介
一个 makefile 主要含有一系列的规则,如下:
A: B
(tab)<command>
(tab)<command>
每个命令行前都必须有tab符号。
上面的makefile文件目的就是要编译一个helloworld的可执行文件。让我们一句一句来解释:
hello :hello.o hello依赖hello.o目标文件。
gcc -o hello hello.o 编译出hello可执行文件。-o表示你指定 的目标文件名。
hello.o:hello.c hello.o依赖hello.c文件。
gcc -c hello.c 编译出hello.o文件。-c表示gcc 只把给它的文件编译成目标文件, 用源码文件的文件名命名但把其后缀由“.c”或“.cc”变成“.o”。在这句中,可以省略-o file1.o,编译器默认生成file1.o文件,这就是-c的作用。
clean:
rm -f hello.o hello
当用户键入make clean命令时,会删除hello.o 和hello\文件。
如果要编译cpp文件,只要把gcc改成g++就行了。
写好Makefile文件,在命令行中直接键入make命令,就会执行Makefile中的内容了。
到这步我想你能编一个hello程序了。
------------------------------------------------------------------华丽一割---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
新年第一天就是加班啊,我小小不平衡了下,但是来了就应该有点成果嘛,除了改了BUG,查看了部分代码外,也给今年的学习开个好头。与君共勉。嘿嘿