我们在平时的学习中要编译我们写的源代码生成可执行文件,大家都知道用gcc编译工具就可以完成任务,更复杂一点的,如果我们编写的文件比较多,那单纯在linux环境下写gcc命令进行编译就显得有点效率太低了,这时我们肯定想到写一个makefile来完成这样稍微复杂的编译过程,我想很多人也确实是是这样做的,所以我们回去学习makefile 的语法,其实如果编译 的文件量再多一些,文件之间的依赖关系更复杂一些,那么我们编写一个正确的,效率高的makefile也不是一件很容易的事情吧。其实我之前是有体验过这样的场景的,我们在linux系统下安装软件的时候,比如第三方的的开源组件,我们下载下来的开源组件也是一堆源代码,我们需要执行里面的 .config配置脚本文件,在执行make命令,然后在执行make install 就能生成能使用的可执行文件,这些文件我们可以采用静态链接或者动态链接的方式来供我们使用。其实在商业项目中也一样,我们需要在我们的源文件中生成这些工具,然后打包,然后使用的过程就和上面一样,下面就来介绍怎么使用Autotool工具来生成。
Autotools工具集:
关于这些工具集可以在gun官网查询它的用法及作用,下面主要介绍如果使用这些工具:
1. 先在linux下创建我们的原文件,hello.c:
2. 执行 autoscan ,生成configure.scan 文件,并把这个文件改名成configure.ac
4. 执行aclocal 生成aclocal.m4文件,再调用autoconf ,autoheader 命令,生成configure文件,新建一个文件Makefile,am 内容如下:
5. 执行 automake --add-missing命令,在新建这些文件:
4.现在目录下就有我们所需的Makefile.in和configure文件
5. 执行.configure 就会在当前目录下生成 Mafile文件,现在我们就可以用make 来进行源代码编译,用make install来进行软件的安装,使用make clean 进行make的反操作,make dist 生成gz包进行商业发布。
5. 整个过程,如下图所示: