开放源码软件的安装
1.基本概念
    开放源码:就是程序代码,写给人类看的程序语言,但机器并不认识,所以无法执行
    编译程序:将程序代码转换成机器能够看懂的语言,类似翻译者的角色
    可执行程序:经过编译程序变成二进制程序后机器看的懂所以可以执行的文件。
    函数库:类似子程序的角色,可以被调用来执行的一段的一段功能函数。
  
    一个软件是否可以安装,即是否可以成为可执行程序,必须对安装环境进行检测,检测程序(configure或者config等文件)
检测的内容包含以下数据:
      1)是否有适合的编译程序可以编译本软件的程序代码;
      2)是否存在本软件所需要的函数库或者其他需要的相关软件;
      3)操作系统平台是否适合软件,包括linux的内核版本;
      4)内核的头定义文件(header include)是否存在(驱动程序必须要的检测)。
  
  
  Tarball:就是一个经过Tar打包和gzip或者bzip2打包压缩后的.tar.gz或者.tar.bz2的软件包。里面主要包含三部分内容:
      1)源代码文件                    2)检测程序文件(可能是configure或者config等文件名)
      3)本软件的简,易说明和安装说明(INSTALL或README),很重要,参考他们可实现tarball的安装。
      
2.安装和升级

安装升级的方式大概有二种:
       1)直接将软件源代码通过编译来安装与升级。
       2)直接以编译好的二进制程序安装升级,厂商针对自己的平台事先编译出自己平台的二进制程序。在相同的平台只需要安装
就可以,省略检测和编译的过程。例如Redhat系统(fedora、centOS等)开发的RPM软件管理机制和YUM在线跟新模式。

tarball的安装流程:
       1)将tarball由厂商的网页下载下来;
       2)将tarball解压缩,生成许多的源文件;
       3)开始gcc进行源码的编译(会生成可执行文件)
       4)然后以gcc进行函数库,主程序,子程序的链接,以形成主要的二进制文件;
       5)将上述的二进制文件以及相关的配置文件安装到自己的主机上面。
上面的3.4步骤可以通过make(写makefile)这个命令的功能来简化它。

3.gcc的简易用法
       1)将编译的源码制作成目标文件,但不制作链接等功能;
             gcc -c hello.c  会生成hello.o文件,并不会生成可执行文件
       2)在编译的时候,依据环境优化执行速度
             gcc -O hello.c -c 会生成hello.o文件,并且进行了优化。
       3)在进行二进制文件的制作时,将链接的函数库与相关的路径填入(这些路径不在默认的位置时需要)         
             gcc sin.c -lm -L/usr/lib -I/usr/include
        * -lm 指的是libm.so或者libm.a这个函数库
        * -L后面接的路径是刚才上面那个函数库的搜索目录
        * -I后面接的是源码内的includ文件的所在位置

4.make的优点
      1)通过makefile文件简化编译时所需要执行的命令。
      2)若在编译完成以后,修改了某个源代码,则make仅会对被修改了的文件进行编译,其他的目标文件不会被修改。
      3)最后可以依照相依性来更新执行文件。

5.makefile的基本语法和变量
     目标(target):目标文件1 目标文件2
     <Tab> gcc -o 欲新建的可执行文件 目标文件1 目标文件2
     
     eg :
     vim makefile
     main:main.o haha.o sin_value.o cos_value.o
        gcc -o main main.o haha.o sin_value.o cos_value.o -lm
     clean:
        rm -f main.o haha.o sin_value.o cos_value.o
    *命令行必须以Tab键开头
    *目标于目标文件之间以”:"隔开
    以上makefile制作了二个执行操作,执行main 输入 make main即可,执行clean 输入make clean即可,如果想要清除在编译
则使用 make clean main就可以了
    
    变量可以像shell script一样 上面的makefile可以改写成
    vim makefile
    LIBS = -lm
    OBJS = main.o haha.o sin_value.o cos_value.o
    main: $(OBJS)
        gcc -o main $(OBJS) $(LIBS)
     clean:
        rm -f $(OBJS)
    *变量于变量内容以 = 隔开,二边可以有空格
    *变量左边不可以有Tab
    *变量最好以大写字母,注意使用$符号对变量应用。
    
 6.tarball安装基本步骤
    1)获得源文件,将Tarball文件放在/usr/local/src目录下解压缩
    2)获得步骤流程,查阅解压缩文件中的INSTALL和README
    3)相关属性软件安装,根据INSTALL和README的内容查看并安装好一些相关的软件(非必要)
    4)建立makefile:以自检测程序(configure或者config)检测操作环境,并建立makefile文件
    5)编译:以make这个程序并使用目录下的makefile作为他的参数配置文件,来进行make(编译,清除等)的操作。
    6)安装:以make这个程序,并以makefile这个配置文件,依据install这个目标(targe)来制定正确的安装路径.

7.tarball软件安装的命令执行方式
    1)./configure 这个步骤是为了建立makefile的,主要通过Script来检测linux系统的相关属性
    2)make clean make读取makefile中的clean目标。建议编译前都执行此步骤,防止上次编译目标文件的残余
    3)make make将会按照makefile中的默认工作进行编译,编译的工作主要是进行gcc将源代码编译成可被执行的目标代码 ,
但是这些目标代码还需要一些库函数之类的连接后,才能成为一个完整的可执行文件。
    4)make install  make会执行makefile中的install操作,将上一步编译的数据安装在默认的目录,完成安装
    *以上只要有一步骤不成功,安装就不会成功。

8.tarball软件安装的建议
    1)最好将tarball的原始数据解压缩到/usr/local/src当中;
    2)安装时,最好安装到/usr/local这个默认路劲中
    3) 考虑到将来反安装的步骤,最好将每个软件单独安装在/usr/local下面
    4)为安装的单独目录的软件man page加入man path搜索
    *如果你安装的软件放在/usr/local/software/中,那么在man page搜素的设置中就要在/etc/man.config内的40-50行左右加入
       MANPATH/usr/local/software/man   这样才能通过man来查询软件的在线帮助文档。
    
9.利用patch跟新源码(不用再下载完整的Tarball)
    1)patch跟新的思想和好处:没有改动过的文件的目标文件根本就不需要在进行编译,而且动过的文件又可以通过make来自动的update。
如此以来,我们原先的设置(makefile文件里的规则)将不需要进行重新改写或者检测,可以节省很多时间。
    2)具体做法:找出源代码的旧版与新版的差别(用diff命令),再通过相关命令(patch)进行更新。所以软件开发商在跟新源码后,
都会提供所谓的patch file(补丁)文件,用来直接跟新源码。
    3)diff与patch的例子:
    假设有二个文件包 main-0.1.tgz   main_0.1_to_main_0.2.patch 在/root目录下
    tar -zxf main-0.1.tgz 解压缩源文件包
    cd main-0.1    进入文件main-0.1
    patch -p1 < ../main_0.1_to_main_0.2.patch  目前在main.0.1目录,注意patch文件的相对路径
    make clean main
    ./main
    make install 安装
    main 直接输入命令就执行
    *注意:pctch文件只是对源码的更新并不是对软件的更新,还是需要对软件进行编译后才能得到最终正确的软件!!因为patch的功能
只是更新源码而已。要牢记。
    *patch必须存在才能完成二个版本的源码更新,不能实现源码的跨版本更新,例如kernel2.4.xx和kernel2.6.xx,是无法使用patch
文件来更新的,他们架构都不一样了。假设kernel2.4.20更新到kernel2.4.26,就必须使用patch2.4.21 2.4.22 2.4.23 ... 2.4.26六个文件
“依次更新”才可以。

10.函数库管理
    1)动态函数库 扩展名 libxxx.a的类型
    2)静态函数库 扩展名 libxxx.so的类型
    3)目前linux大多是将函数库做成动态函数库,再来就是需要增加函数库的读取性能,将常用的函数库加载到内存当中(缓存,cache)
如此一来,当软件使用动态函数库时,就不需要从硬盘中读取,这样就增进了动态函数库的读取速度。
    4)如何将动态函数库加载到高速缓存?
    a.首先,我们将/etc/ld.so.conf里面写下想要读入高速缓存当中的动态函数库所在的目录!是目录不是文件。
    b.接下来就是利用ldconfig这个可执行程序将/etc/ld.so.conf的数据读入缓存。
    c.同时也将数据记录一份在/etc/ld.so.cache这个文件中。
    
11.函数的动态库解析:ldd
    1)如何判断可执行程序的二进制文件含有哪些动态的函数库?利用ldd就可以了。
    2)例如想知道/usr/bin/passwd这个程序含有那些动态库。可以这样做:
        ldd /usr/bin/passwd    找出这个文件的函数库数据

开放源码软件的安装(tar包安装方法)相关推荐

  1. kali rpm 安装方法_linux下制作安装rpm包的方法

    linux下制作安装rpm包的方法 发布时间:2013-04-26 22:39:17   作者:佚名   我要评论 制作rpm包,以rp-pppoe-3.10为列进行制作过程,需要的朋友可以参考下 一 ...

  2. centos 7使用tar包安装ansible

    由于我的yum源没有ansible软件包,防止以后内网服务器也没有ansible的yum源,干脆一点,直接tar包安装!!!! 下载软件包 - # 1.python安装 # python2.7安装 [ ...

  3. python 安装PIL包的方法以及简单介绍

    引用文章1: python安装PIL包的方法 https://www.cnblogs.com/CarbinHee/p/7780279.html 引用文章2: PIL https://www.liaox ...

  4. Web前端培训知识分享:2种离线安装npm包的方法

    学习Web前端的朋友都知道JavaScript是前端绕不开的话题,也是学习的重难点.而npm是连接JavaScript的一扇大门,能解决NodeJS代码部署上的很多问题,很多人在学习时对于npm包怎么 ...

  5. 解决离线安装依赖包的方法

    解决离线安装依赖包的方法 参考文章: (1)解决离线安装依赖包的方法 (2)https://www.cnblogs.com/rong2019/articles/11910867.html (3)htt ...

  6. Centos7安装MySQL-RPM包安装

    Centos7安装MySQL-RPM包安装 前期准备工作 Vmware中安装好Centos7虚拟机,并启动起来 下载好MySQL相关RPM包 安装有Xshell 和Xftp 等访问CentOS系统的工 ...

  7. linux下tar包安装sudo命令,ubuntu12.04LTS安装gv-412-Linux-x86.tar.gz方法

    折腾了2天多,终于装好了. 操作系统 Ubuntu 12.04 LTS (在win7系统下用ubuntu的windows安装工具安装的,有点类似双系统) gaussian view程序 gv-412- ...

  8. Linux安装软件包无法打开rpm,详解Linux 操作系统下安装rpm包的方法步骤

    第2代Linux操作系统在安装软件方面相当简单:第一步,搜索你要的软件,比如你要找一个游戏软件,它的名称叫myward,这个游戏软件的介绍是:myown war game.Linux操作系统搜索这个软 ...

  9. linux 命令mysql5.6,linux下mysql5.5mysql5.6的tar包安装

    提前yum安装依赖包 yum -y install perl perl-devel libaio* 'perl(Data::Dumper)' 准备好mysql的tar包 1.在/usr/local下解 ...

  10. gcc的安装----rpm包安装顺序

    GCC,rpm包安装顺序 cd/mnt/cdrom/Server kernel-headers-2.6.18-128.el5.i386.rpm glibc-headers-2.5-34.i386.rp ...

最新文章

  1. chrom扩展开发-入门
  2. Flink1.4.0连接Kafka0.10.2时遇到的问题
  3. Dart.Powerweb.livecontrols应用
  4. 通过bios修改服务器ipmi配置,Dell服务器之配置ipmi远程console管理
  5. cUrl 强大的文件上传/下载工具
  6. c# 获取字符串的字节数
  7. 微分方程之————微分方程的基本概念
  8. 2021-12-20---2021SC@SDUSC---DolphinScheduler(13)
  9. 企业管理系统各主要模块简介
  10. python学习感悟
  11. ubntu 五笔输入法 打不出词组
  12. 软件自动化测试框架STAF
  13. 量化投资学习——技术指标介绍
  14. FPGA数字信号处理之乘法器
  15. 如何使用python做图_如何使用python做动图
  16. 拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从?
  17. Java基础——匿名内部类详解及举例
  18. 判断是否为Debug模式
  19. 漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
  20. CA双向认证完整实现步骤(附java客户端代码)

热门文章

  1. openstack安装newton版本dashboard+cinder(六)
  2. Servlet请求转发RequestDispatcher接口
  3. Linux下的帮助命令
  4. 关于修改域用户密码的WebPart的问题的问题.
  5. orale如果是整数后面补小数点0_Win10完美整数大小磁盘分区
  6. 螃蟹保存方法保存时间_螃蟹吃不完怎么保存?学会这4招,不论是海蟹、河蟹通通都不愁...
  7. 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
  8. pyCharm-激活码(2018)
  9. Springmvc 的post请求的json格式参数
  10. web开发需要注意/n的问题