UNIX命令行快速入门7

来源:互联网 发布:淘宝助手缓存清理 编辑:程序博客网 时间:2024/05/28 03:03
  1. 编译UNIX软件包UNIX中已经安装了许多公共和商业软件,若要自己安装软件则需要以下几个步骤:

      下载源代码(一般是一个压缩文件)

      解压缩源代码

      编译源代码 (最难)

      安装可执行文件

      设置安装目录的环境变量

  2. 编译源代码所有的高级语言代码都必须转换成一个计算机可以理解的形式,如C语言需要转为汇编再转为字节码,这样计算机才能理解。最后的阶段是将程序编译的代码和系统的内建库进行链接,生成可执行程序。由于该过程过于复杂,因此可通过一些组件和工具来简化该步骤。

  3. makeMakefile命令make可以让程序员来管理大型的程序或者程序的组织结构。当程序中的一部分被修改,不必编译项目的所有部分,只要编译修改过的部分就可以了。make命令组织变异的方式来自于一个叫做Makefile的文本文件,这个Makefile文件与源代码是放在一个目录下的。包含的信息就是说明如何编译软件,例如在优化阶段,决定是不是在最终程序中包含调试信息之类的问题。这个文件也会包含一些最终的文件安装到何处的信息等等,还有手册页,数据文件,所需要的库文件和配置文件等等。一些包需要你手动编辑Makefile文件来设置最终的安装目录还有其他的参数。但大多数包现在已经随GNU配置组件一起分发了。

  4. 配置:随着UNIX变种的增加,写一个可以运行在全部系统版本上的软件变得很难了。GNU配置和生成系统简化了作为源代码分发的程序的构建。configureshell脚本会尝试去猜测不同的系统在编译的时候使用的正确变量,用这些值来为每一个包构建一个Makefile

    编译一个包最简单的方法就是:

    1cd切换到包含包源代码的目录

    2、输入./configure来对你的系统和包进行配置

    3、输入make来编译包

    4、有选择的输入make check来运行包自带的自我测试

    5、输入makeinstall来安装程序文件和数据文件,还有文档手册

    6、有选择的输入makeclean来删除所有二进制文件和字节码文件

    configure组件支持非常非常多的额选项,可以使用--help来查看需要的选项意思。有一个选项你可能会频繁使用:--prefix--exec-prefix,这两个选项用来指定安装的目录。跟在--prefix后面的目录是安装一些与机器无关的文件,比如文档,数据还有配置文件。选项--exec-prefix后面的是可执行文件的目录,一般是prefix的目录的子目录。

  5. 下载源代码:可先创建一个下载目录mkdir download,然后Downloadthesoftwarehere保存到你新建的目录下。

  6. 解压源代码:可先转到源代码文件夹并列出清单

      cd download

      ls -l

    下载下来的文件名字是以.tar.gz结尾的。tar命令是将一些文件打包成一个tar文件,然后使用gzip将其生成一个tar.gz文件。

    先使用gunzip命令解压缩,这会创建一个.tar文件

      gunzipunits-1.74.tar.gz

    然后再解压tar文件

      tar-xvf units-1.74.tar

  7. 配置和创建Makefile对于安装的软件需要仔细阅读文本文件readmeinstall,这两个文件包含了编译和安装软件的重要信息。units包使用GNU配置系统来编译源代码。安装文件时我们需要指定安装目录,因为默认的目录我们可能没有写权限。创建一个一个安装目录在home目录下:

      mkdir~/units174(无论当前目录在哪,都在home中创建该文件)

    然后运行配置组件来指定安装路径

      ./configure–prefix=$HOME/units174

    其中变量$HOME是一个环境变量的例子,他的值是你的主目录的路径,可通过echo $HOME来获取主目录路径。


    如果configure运行正确,就会创建Makefile文件,你可以看看这个文件,但是不要去修改他的内容。


  1. 构建包:通过make命令来构建包,make后会创建可执行文件,可用makecheck来检查,如果正确则可以通过makeinstall进行安装。

  2. 运行软件:安装号软件后可以看到以下几个目录

    bin

    二进制文件

    info

    GNUinfo格式文档

    man

    手册页

    share

    共享数据文件

    若要运行程序必须在bin目录下然后输入./units

    如果想要阅读所有的文档,可以切换到info目录,然后输入

      info--file=units.info

  3. 去除不必要代码:在开发软件时执行文件中包含了很多调试信息,但对于用户来说没有必要,因此可从最终文件中去除。若要去除需要观察二进制文件在之前和之后的大小的对比,可以使用file命令来看看文件的信息。

            fileunits

            教程中输出units:ELF 32-bit LSB executable, Intel 80386, version 1, dynamicallylinked (uses shared libs), not stripped

    然后用strip命令来去除所有调试和行号信息

      strip units

    ls-l

    可以看到文件大小变为了原来的三分之一,之后可以再检查以下文件信息

    file units

    教程中输出units:ELF 32-bit LSB executable, Intel 80386, version 1, dynamicallylinked (uses shared libs), stripped

    有时候你可以使用命令make来安装已经去除了信息的版本,只要把makeinstall换成makeinstall-strip