zoukankan      html  css  js  c++  java
  • ubuntu下的软件安装

      linux下支持的软件格式比较多,安装方式也很多样,这里进行一个小总结……

      1.deb包

        这时最方便的一种,直接在软件中心,或apt-get,就解决问题了~它会解决所有依赖关系,各种设置等……一般的deb包(包括新立得或者apt-get下载的)都在/usr/share。自己下载的压缩包或者编译的包,有些可以选择安装目录,一般放在/usr/local/,也有在/opt的。

      apt-get常用命令:clean   ,  check  ,   autoclean   ,    update   ,  upgrade  ,   autoremove  ,   remove ,   search , show  ,  install  , dist-upgrade,depends ,source

      2.源码包

      这是最通用的包安装方式,一次编写到处编译……移植性最好,其安装稍显繁琐,但不是你想的那么复杂!!

    安装的具体步骤:

    CODE:安装之前最好阅读下源码目录下的README或者INSTALL文件

    $ tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)   解压缩

    $ cd XXXX

    $ ./configure  运行configure脚本,对当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在  ./configre --help,获得帮助信息

    $ make   根据Makefile中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件,最后再使用链接器生成最终的可执行程序

    # make install      将可执行程序安装到正确的位置

    $make clean    安装完成后用来清理临时文件

      在这里我尝试着解释一下上面这些步骤存在的理由,从C语言的角度来说,一个程序从源码到正确生成相关的可执行文件,下面这些部分必不可少:源文件,编译器,汇编器,连接器,依赖库,通过上面几个步骤,朋友们应该已经知道,真正执行编译链接操作的步骤只有一个(make),那其他步骤存在的理由何在?

    有一点是肯定的,我在自己的电脑上使用C语言写一些自娱自乐的小程序,也没有用到"configure or make install"之类的命令,顶多自己写个Makefile管理源文件的依赖关系,可是软件开发者不同,他必须考虑到软件的可移植性,他开发的软件不能仅仅就在他自己的pc上跑吧?不同的平台可能连硬件体系结构都不同,这样就导致了Makefile的不可移植性,为了解决这个问题,开发者通常使用autoconf之类的工具生成相应的configure脚本,而configure脚本就是用来屏蔽相应的平台差异,从而正确生成Makefile文件,然后make再根据configure的劳动成果(Makefile)完成编译链接工作.

    至于"install or clean or uninstall",也只是对应着Makefile文件中不同的规则,关于Makefile的详细信息,朋友们可以自行查阅相关的文档.

  • 相关阅读:
    LeetCode 79. 单词搜索(Word Search)
    LeetCode 39. 组合总和(Combination Sum)
    LeetCode 34. 搜索范围(search for a range)
    LeetCode 300. 最长上升子序列(Longest Increasing Subsequence)
    一段程序的分析——C++析构器,何时析构
    C++ 字符串, 数字 相互转化
    MFC 如何为控件关联变量
    上位机驱动开发经验之修改3个“附加”
    MFC Edit控件的使用~~
    thinkphp中AJAX返回ajaxReturn()方法分析
  • 原文地址:https://www.cnblogs.com/xiangzi888/p/2184363.html
Copyright © 2011-2022 走看看