Linux软件安装:源码与Tarball

一、开放源码的软件安装与升级简介

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简化。

时间: 2024-10-26 03:15:43

Linux软件安装:源码与Tarball的相关文章

linux 下安装 源码安装mysql

Linux安装mysql--源码安装 1.假设已经有mysql-5.5.10.tar.gz以及cmake-2.8.4.tar.gz两个源文件 (1)先安装cmake(mysql5.5以后是通过cmake来编译的) [[email protected] rhel5 local][[email protected] rhel5 local][[email protected] rhel5 cmake-2.8.4][[email protected] rhel5 cmake-2.8.4][[email

Linux编译安装源码包的流程

本文参考:http://www.linuxfromscratch.org/lfs/view/7.10-rc1/chapter05/generalinstructions.html 流程: 1.  下载并解压源码包2.  运行:configure3.  编译:make4.  安装:make install 编译时需要注意一个原则:不要在解压的包中直接执行./configure.make.make install等命令,需要在源码目录下另外新建一个目录,在新建的目录中执行以上命令. 例子:这里以源码

centos安装源码包 示例安装apache

在Linux下安装源码包时最常用的,需要我们把源代码编译成可执行的二进制文件.Linux上的C语言编译器称为gcc,利用它可以把C语言编译成可执行的二进制文件. 如果没有安装gcc,就无法编译源码,你可以使用命令yum install -y gcc来完成安装. 安装源码包的3个步骤: 1)./configure 这一步可以定制功能,加上相应的选项,具体可以有什么选择可以通过命令./configure --help来查看.这一步会自动检测你的Linux系统与相关的套件是否有编译该源码包时所需的库,

linux卸载一个源码包安装的软件的流程

完全卸载memcached的方法(CentOS) 我的大内存vps(centos系统)曾经安装过memcached,想给论坛提速,实际上不但没有明显效果,反倒耗费内存,看着碍眼,于是想卸载,于是网上各种搜索+自己实践,搞出一个傻瓜方案来: 1.结束memcached进程# killall memcached 2.删除memcached目录及文件# rm -rf /usr/local/memcached# rm -f /etc/rc.d/init.d/memcached 3.关闭memcached

在 Linux 系统上源码安装 GTK+ 2.0

在 Linux 系统上源码安装 GTK+ 2.0==================================================Keywords: GTK+, Install, Linux, SourceAuthor:       whyglinux (whyglinux AT hotmail DOT com)Date:          2007-01-07==================================================目录0. 前言1.

subversion linux 服务器端搭建 源码安装

下载源码包 1.1 subversion 源码包 http://subversion.apache.org/download/ 1.2下载sqlite-amalgamation 此处用的版本 subversion-1.8.9.tar.gz sqlite-amalgamation-201408010140.zip 2.请参照 http://my.oschina.net/u/234018/blog/297849 安装apr apr-util apache 3. 解压 安装  tar -zxvf su

Linux下Zabbix_Server的安装-源码安装

Centos下Zabbix_Server/agent/proxy的安装配置 --------源码编译 完整版请查看附件 一.环境说明 a)软件环境 由于是源码安装,官方的zabbix源码包内已经包含了Server,Proxy, Agent, GUI所有组件和必要的执行脚本,截至本文正式版本限于2.2.3: LAMP环境 n操作系统使用Centos6.5 X86_64 最小化安装,并yum update到最新状态,内核版本为2.6.32-431.17.1.el6.x86_64: nMysql 使用

linux系统下源码安装PHP5.6

linux系统下源码安装PHP5.6 从php5.4开始,需要自己下载安装libXpm-dev了,但是由于包的依赖性原因,我就选择了yum方式来进行安装,通过网络yum源直接下载并进行安装了 下载php以及相关的库文件(百度网盘:http::/pan.baidu.com/s/1bnL31c7) gd库以及php功能特性扩展库文件 libgd-2.1.1.tar.gz        gd库文件(使php支持以下功能)     jpegsrc.v7.tar.gz         jpeg库文件(使p

Linux学习之源码包安装与脚本安装(十八)

Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 安装更慢,更容易报错 安装更自由 安装完后效率更高 RPM包: 经过编译,能看到源代码 安装更快,报错容易解决 2.RPM包安装位置与源码包安装位置 RPM包安装位置: 源码包安装位置: 安装在指定位置当中,一般是/usr/local/软件名/  3.安装位置不同带来的影响 RPM包安装的服务可以

Linux下基于源码方式安装MySQL 5.6

MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文描述了如何在源码方式下安装MySQL. 1.安装环境及介质#安装环境SZDB:~ # cat /etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3