Linux中的配置,让,让安装到底在做些什么

  

  ,在Linux下经常要安装部署一些软件包或者工具,拿到安装包之后一看,简单,配置,制作,安装即可搞的定。   

  

  ,,有时候我就在想,这个congigure,,使安装是什么意思呢,配置是测试存在的特性,然后使开始编译,使安装生成相应的可执行文件。但是一个工具只是记住了其中的拼写部分或是基本的概念,但是对于原理知之甚少,也是需要补补了。   

  

  几个构建编译隐藏的命令   

  

  ,,   要先说这个编译安装过程,使用命令aclocal会生成m4文件,aclocal本质上是一个perl脚本。先提提m4, m4是一种宏处理器,它是   POSIX标准的一部分。为什么叫m4呢,全称是宏,m后面有4个字母,据说是这样的,哈哈。摘录一段对于m4的描述:从图灵的角度来看   m4,输入流与输出流可以衔接起来构成一条无限延伸的纸带,m4   是这条纸带的读写头,所以m4是一种图灵机.m4   的计算能力与任何一种编程语言等,同区别只体现在编程效率以及所编写的程序的运行效率方面。   

  

  ,,然后是autoconf、是生成配置文件的,配置是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使你的源代码能在不同的操作系统平台上被编译出来。   

  

  ,,最后是automake用来生成Makefile.in文件   

  

  ,,简单总结一下,这个编译过程涉及几个命令工具,大体的功能点如下。   

  

  aclocal,,,,,#产生aclocal。m4
  autoconf,,,,,#根据配置。在生成配置
  automake——添加缺少的,,,#根据Makefile.am生成Makefile.in   

  

  ,网上找到一张总结的很牛的图,很全面。   

  

   Linux中的配置,使安装到底在做些什么”>
  </p>
  <p>
  构建过程环境准备
  </p>
  <p>
  我们写个简单的Hello world来了解下整个过程吧。
  </p>
  <p>
  ,,我写了一段非常简单的c程序,就凑合着编译着用吧。文件为c
  </p>
  <p>
  # include & lt; stdio.h> <br/>
  int主要(int命令行参数个数,const char * argv []) <br/>
  {<br/>
  ,,printf (   ,,返回0;
  }   

  

  可以看的出,程序运行后的输出就是Hello world,一个新的测试   

  

  我们看看构建GNU程序中如何按照规范来模拟这个过程   

  

  我们创建一个文件configure.ac,里面是一些宏,是接下俩的autoconf来处理的需要的,然后交给automake来处理,最终完成这个检查。   

  

  AC_INIT ([helloworld], [0.1], [xxx@xxx.com])
  AM_INIT_AUTOMAKE
  AC_PROG_CC
  AC_CONFIG_FILES ([Makefile])
  AC_OUTPUT   

  

  比如AC_INIT ([helloworld], [0.1], [xxx@xxx.com])的含义是autoconf生成包的名字,版本(这个可以自己定义),反馈邮箱,   

  

  AM_INIT_AUTOMAKE是检查automake尝试Makefile时的工具,AC_PROG_CC是编译器检测,AC_CONFIG_FILES是automake构建出类似在的文件。   

  

  ,然后就是Makefile的文件,我们设定名字为Makefile.am,这部分的内容和上面的配置是密切相关的。   

  

  (root@oel64 tmp) #猫Makefile。是
  AUTOMAKE_OPTIONS=外国
  bin_PROGRAMS=helloworld
  helloworld_SOURCES=c   

  

  automake提供了3种软件等级:外国,gnu和gnits。默认等级是gnu。此处AUTOMAKE_OPTIONS使用的是外国,表示只检测必要的文件。   

  

  bin_PROGRAMS定义了要产生的执行文件名,这里我们定义为helloworld   

  

  file_SOURCES定义文件这个执行程序的依赖文件,其中“file_SOURCES”中的前部分“文件”要改写成可执行文件名,即与bin_PROGRAMS定义的名称一致,此处就是helloworld了。如果有多个可执行文件,那就要定义相应的file_SOURCES。   

  

  构建过程实践   

  

  到目前为止,我们创建了3个文件c, configure.ac Makefile.am   

  

  [root@oel64 c] #我
  -rwxr-xr-x。1根root 108年9月13日12:13配置。交流
  -rw-r——r。1根root 105年9月13日12:13主要。c
  -rw-r——r。1根root ,79年9月13日12:13 Makefile。是
  首先使用aclocal来得到m4文件。这里生成了2个文件,一个是aclocal.m4,另外一个是缓存文件autom4te。缓存

Linux中的配置,让,让安装到底在做些什么