• Linux系统源码安装过程中的prefix选项


    在linux和unix环境中,源码安装是最常用的软件安装方式,一些软件除了提供源码外,也提供各种发行版的二进制安装包(如基于redhat包管理工具的rpm包),但强烈建议使用源码安装方式。原因是:(1)没有类似rpm那样让人恼 火的包依赖关系,(2)源码安装灵活自由,适用于不同的平台,维护也十分方便。

    源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是个可执行脚本,他有很多选项,使 用命令./configure –help输出周详的选项列表,如下:

      -bash-3.00# ./configure --help

      Usage: configure [options] [host]

      Options: [defaults in brackets after descriptions]

      Configuration:

      --cache-file=FILE cache test results in FILE

      --help print this message

      --no-create do not create output files

      --quiet, --silent do not print `checking...' messages

      --version print the version of autoconf that created configure

      Directory and file names:

      --prefix=PREFIX install architecture-independent files in PREFIX

      [/usr/local]

        --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX

      [same as prefix]

        --bindir=DIR user executables in DIR [EPREFIX/bin]

      ……….(省略若干)

    很多的选项,个人认为,您能够忽略其他的一切,但请把—prefix加上。这里以安装supersparrow-0.0.0为例,我们打算把他安装 到目录 /usr/local/supersparrow,于是在supersparrow-0.0.0目录执行带选项的脚本./configure –prefix=/usr/local/supersparrow,执行成功后再编译、安装(make,make install);安装完成将自动生成目录supersparrow,而且该软件任何的文档都被复制到这个目录。

      为什么要指定这个安装目录?是为了以后的 维护方便,假如没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,很难弄清楚到底复制了那些文档、都复制到哪里去了—基本上是 一塌糊涂。

      用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就能够把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。

    一个小选项有这么方便的作用,建议在实际工作中多多使用。

      ./configure && make && make install 安装三步曲到底发生了什么呢?

    用一句话来解释这个过程就是:
      1、根据源码包中 Makefile.in 文件的指示,configure 脚本检查当前的系统环境和配置选项,在当前目录中生成 Makefile 文件(还有其它本文无需关心的文件),

      2、然后 make 程序就按照当前目录中的 Makefile 文件的指示将源代码编译为二进制文件,最后将这些二进制文件移动(即安装)到指定的地方(仍然按照 Makefile 文件的指示)。
       由此可见 Makefile 文件是幕后的核心。要深入理解安装过程,必须首先对 Makefile 文件有充分的了解 

  • 相关阅读:
    编译原理 实例
    lex yacc flex bison
    图解tensorflow 源码分析
    PostgreSQL 179个场景 案例集锦
    github view source
    Java 微服务实践
    Linux kernel AIO
    Lex与Yacc学习
    OpenResty 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台
    nginx Architecture
  • 原文地址:https://www.cnblogs.com/chris-cp/p/3505039.html
Copyright © 2020-2023  润新知