学习make、makefile的一些基本语法

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

猜你喜欢

转载自blog.csdn.net/xiao_jj_jj/article/details/81258860