一、开放源码的软件安装与升级简介
1.开放源码、编译程序与执行文件
开放源码:就是程序代码(写满了程序代码的纯文本文件);
编译程序:将程序代码与函数库做链接,并翻译成机器看得懂的语言;
可执行文件:机器看得懂的二进制执行文件。
图示三者关系:
2.函数库
函数库:类似子程序的角色,可以被调用来执行的一段功能函数。
图示外部动态函数库的调用情况:
·Linux内核提供了相当多的函数库来给硬件开发者利用(系统调用);
·由上面的图示可知识,硬件开发者可通过调用内核函数库来开发出与硬件特性相关的产品;
·软件开发者也可以根据内核函数库来开发出相关的软件。
3.make与configure
make:一个程序,make会在当前的目录下搜索Makefile(or makefile)这个文本文件
Makefile:记录了源码如何编译的详细信息,由configure程序检测环境成功后生成
configure:由软件开发商开发的“一个用来检测用户操作环境是否有软件开发商所需功能”的程序
·使用类似gcc编译程序编译数据量大的源码时(小程序很多),编译命令要写很多;
·make程序可以进行编译过程的命令简化;
·执行make时,先执行configure检测环境,再生成Makefile文件,最后根据Makefile的内容对源码进行编译;
·configure需要检测的数据:
a.是否有适合的编译程序可以编译本软件的程序代码
b.是否已经存在本软件所需要的函数库或其他需要的相关软件
c.操作系统平台是否适合本软件,包括Linux的内核版本
d.内核的头定义文件(header inclde)是否存在(驱动程序必须要检测的)
图示:make->configure->makefile->编译->生成最终软件
--需要环境检测的原因
·每个Linux distribution使用相同的内核,但内核的版本可能不一样;
·不同版本的内核所使用的系统调用(对应内核函数库)可能不相同;
·不同的Linux distribution的函数库文件路径、函数库的文件名定义或是默认安装的编译程序都不相同;
·每个软件需要的相关函数库并不相同;
·软件开发商并非只针对Linux开发,而是针对UNIX-Like做开发;
·因此为了保证开发的软件能正常的使用,就需要对环境做检测,以得出相关的环境信息,做正确的编译调用。
·因此理论上在Centos编译的软件直接拿到Ubuntu中是无法执行的,需要重新编译。
4.Tarball的软件
纯文件文件:一种文件格式,在网络中传输时,十分浪费带宽,源代码即是这种文件格式
gzip:一种压缩技术,使用该压缩技术压缩后的文件名一般为*.tar.gz
Tarball:通过gzip技术压缩源代码文件后得到的文件,是一个软件包
·源代码文件直接在网络上共享很浪费带宽;
·使用gzip技术打包源代码文件即可以解决这个问题;
·打包后的文件称为Tarball文件,即Tarball是一个软件包;
·解压缩Tarball后,通常可以获得:
a.源代码文件
b.检测程序文件(configure或config等文件名)
c.本软件的简易说明与安装说明(INSTALL或README)
5.安装与升级软件
编译:将源代码文件通过编译程序翻译成机器可识别的二进制可执行文件程序
安装:从源代码编译开始到软件真正可以使用,可以认为是安装;将编译生成的二进制文件组合起来形成功能完整的软件,也可以认为是安装
--软件更新
·更新软件的两大类方法:
a.直接以源码通过编译来安装与升级
b.直接以编译好的二进制程序来安装与升级
·a方法在安装过程中具有很高的可选择性,但相对麻烦;
·b方法,Linux distribution厂商针对自己的Linux平台先进行编译过程,再将编译好的二进制程序释出,这样可以直接在该平台上安装,省去检测与编译的过程,节省了时间;
·b方法即“预先编译好程序的机制”被称为包管理模式;
·包管理模式存在于很多distribution,这些模式有RPM、yum、dpkg与APT等;
--软件安装
·由上面知道,可以有两种方式来提供软件的安装,即编译与包管理模式;
·编译安装的流程为:
a.将Tarball下载下来
b.将Tarball解压缩,生成很多源代码文件
c.开始以gcc等编译器进行源码的编译(会生成目标文件)
d.然后以ggcc进行函数库、主程序、子程序的链接,以形成主要的二进制文件
e.将上述的二进制文件以及相关的配置文件安装至自己的主机上面
·c、d步骤已经被make简化。