make的基本功能是可以简化变异过程里面所执行的命令,当然 还有其他很多很方便的功能。
所以我尝试用简单的例子来说明这个基本用法(-_-)
例子:
先编写四个简单的.c文件,放置在一个目录下,(注意一个程序中只能含有一个main哟 ,所以在写这写.c文件的时候 也只能包含一个main,其他的可以写为函数,然后去调用)
majun@MJ:~/Desktop/study$ ls
ask.c end.c hello.c xuexi.c
再对这四个.c文件进行编译,会分别生成四个.o文件;
majun@MJ:~/Desktop/study$ gcc -c ask.c
majun@MJ:~/Desktop/study$ gcc -c end.c
majun@MJ:~/Desktop/study$ gcc -c hello.c
majun@MJ:~/Desktop/study$ gcc -c xuexi.c
查看一下,可以看到四个.o文件
majun@MJ:~/Desktop/study$ ls
ask.c ask.o end.c end.o hello.c hello.o xuexi.c xuexi.o
再进行链接成为一个可执行的文件
majun@MJ:~/Desktop/study$ gcc -o exe hello.o ask.o xuexi.o end.o -lm
majun@MJ:~/Desktop/study$ ls 查看一下 生成的名为exe的文件 是可以执行的
ask.c ask.o end.c end.o exe hello.c hello.o xuexi.c xuexi.o
majun@MJ:~/Desktop/study$ ./exe 运行名字是exe的文件
hello,I'm M_J!
what are you doing?
study make and makefile now!
ok! jia you
可以得出结论是 这样的步骤很是麻烦,为了省去这中间的编译烦恼,聪明的人类就想到了更好的办法。那就是利用make这个工具
majun@MJ:~/Desktop/study$ vi makefile 自己编写一个makefile的规则
majun@MJ:~/Desktop/study$ rm exe *.o 先将先前产生的 .o 和那个可以执行的名为exe的移除
majun@MJ:~/Desktop/study$ ls 查看一下 只有.c 和makefile文件
ask.c end.c hello.c makefile xuexi.c
majun@MJ:~/Desktop/study$ make 然后就给它make一下
cc -c -o hello.o hello.c
cc -c -o ask.o ask.c
cc -c -o xuexi.o xuexi.c
cc -c -o end.o end.c
gcc -o exe hello.o ask.o xuexi.o end.o -lm
majun@MJ:~/Desktop/study$ ls 再次查看一下,和原来的一样
ask.c ask.o end.c end.o exe hello.c hello.o makefile xuexi.c xuexi.o
majun@MJ:~/Desktop/study$ ./exe
hello,I'm M_J!
what are you doing?
study make and makefile now!
ok! jia you
其实 知道了makefile就是将一些编译的规则给它集成了 那么 最后的rm那个命令也可以直接写在里面
这个是编辑的makefile里面的内容:
majun@MJ:~/Desktop/study$ vi makefile
exe: hello.o ask.o xuexi.o end.o
gcc -o exe hello.o ask.o xuexi.o end.o -lm
clean:
rm -f exe exe hello.o ask.o xuexi.o end.o
majun@MJ:~/Desktop/study$ make 重新make一下
make: 'exe' is up to date. 提示 可以执行的文件已经更新
所以 在这里 再总结一些东西:
Makefile
在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:
make
根据Makefile编译源代码,连接,生成目标文件,可执行文件。
make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
make install
将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。
make uninstall
将编译成功的可执行文件从系统目录中卸载,一般为/usr/local/bin目录。
make dist
产生发布软件包文件(即distribution package)。这个命令将会将可执行文件及相关文件打包成一个tar.gz压缩的文件用来作为发布软件的软件包。
它会在当前目录下生成一个名字类似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我们在configure.in中定义的AM_INIT_AUTOMAKE(PACKAGE, VERSION)。
make distcheck
生成发布软件包并对其进行测试检查,以确定发布包的正确性。这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件包已经准备好,可以发布了。
make distclean类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile
2018年07月28日11:08:17