linux下源码安装软件

在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包,不同的最终用户经过编译就可以正确运行,这也是非常符合c语言的设计哲学的,一次编写,到处编译么,而常见的二进制包,比如rpm和deb,软件开发者必须为每种特定的平台定制好专门的软件包,这个通过rpm文件的后缀名就可以初见端倪,比如ppc,sparc,i386之类,在这里不做过多的陈述,其实源码安装软件远没有很多朋友想象的那么复杂,下面我在这里尽可能详细的做一些陈述,如有谬误,欢迎朋友们拍砖!

安装的具体步骤:

  1. $ tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)
  2. $ cd XXXX
  3. $ ./configure
  4. $ make
  5. # make install

复制代码

  1. $ make clean

复制代码

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

  1. # make uninstall

复制代码

用来卸载软件

解压:

        最常见源码包的就两种(XXXX.tar.gz or XXXX.tar.bz2),其实这些源码包都是由2个工具压缩而成的,tar.gz结尾的文件用到的工具是tar和gunzip,而tar.bz2结尾的文件所使用的工具是tar和bzip2,之所以这样做是因为,tar仅仅能够打包多个文件但是没有压缩的功能,而gz和bz2却刚好相反,仅能够压缩单个文件,这样我们常见的源码包实际上是通过tar先将不同的源文件打包,然后再通过gunzip或者bzip2压缩后发布的,当然这两个步骤可以通过一条命令实现:

  1. $ tar zcvf XXXX.tar.gz XXXX(or tar jcvf XXXX.tar.bz2 XXXX)

复制代码

解压的相关命令如下:

  1. $ tar zxvf XXXX.tar.gz
  2. $ tar jxvf XXXX.tar.bz2

复制代码


./configure:

        解压完成就正式开始安装了(补充一点,开始configure之前,如有必要,请使用patch工具为源码打上相应的补丁),首先跳转到源码的解压目录,众所周知,开始configure前还是应该仔细阅读源码目录下的README或者INSTALL文件,好多安装中的注意事项在这里都有所罗列,configure实际上是一个脚本文件,在当前目录中键入"./configure",shell就会运行当前目录下的configure脚本,有一点必须说明,在整个configure过程,其实编译尚未进行,configure仅仅是做编译相关的准备工作,它主要对您当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在,如果在检测的过程没有任何错误,你很幸运,configure脚本会在当前目录下生成下一步编译链接所要用到的另一个文件Makefile,当然configure支持及其丰富的命令行参数,可以键入"./configre --help"获取具体的信息,最常用的恐怕就是:

  1. $ ./configure --prefix=/opt/XXX

复制代码

它用来设置软件的安装目录. 

make:

        如果configure过程正确完成,那么在源码目录,会生成相应的Makefile文件,Makefile文件简单来说包括的是一组文件依赖关系以及编译链接的相关步骤,事实上真正的编译链接工作也不是make所做的,make只是一个通用的工具,一般情况下,make会根据Makefile中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件,最后再使用链接器生成最终的可执行程序:

  1. $ make

复制代码


make install:

        当上面两个步骤正确完成,代表着编译链接过程已经完全结束,最后要做的就是将可执行程序安装到正确的位置,在这个步骤,普通用户可能没有相关目录的操作权限,临时切换到root是一个不错的选择,"install"只是Makefile文件中的一个标号,"make install"代表着make工具执行Makefile文件中"install"标号下的所有相关操作,如果在configure阶段没有使用"--prefix=/opt/XXX"指定应用程序的安装目录,那么应用程序一般会被默认安装到/usr/local/bin,如果/usr/local/bin已经存在于您的PATH中,那么安装已经基本结束:

  1. #make install

复制代码


make clean:
make uninstall:

        这两个步骤只是安装的后续操作,有一点必须注意,"clean"和"uninstall"也是Makefile文件中相应的两个标号,执行这两个步骤的时候Makefile文件必要保留,"make clean"用来清除编译连接过程中的一些临时文件,"make uninstall"是卸载相关应用程序,与make install类似,make uninstall也需要切换到root执行,不过"uninstall"标号在好多Makefile中都被省略掉了,朋友们完全可以自己在相应的Makefile文件一探究竟.

Why?
        在这里我尝试着解释一下上面这些步骤存在的理由,从C语言的角度来说,一个程序从源码到正确生成相关的可执行文件,下面这些部分必不可少:源文件,编译器,汇编器,连接器,依赖库,通过上面几个步骤,朋友们应该已经知道,真正执行编译链接操作的步骤只有一个(make),那其他步骤存在的理由何在?
        有一点是肯定的,我在自己的电脑上使用C语言写一些自娱自乐的小程序,也没有用到"configure or make install"之类的命令,顶多自己写个Makefile管理源文件的依赖关系,可是软件开发者不同,他必须考虑到软件的可移植性,他开发的软件不能仅仅就在他自己的pc上跑吧?不同的平台可能连硬件体系结构都不同,这样就导致了Makefile的不可移植性,为了解决这个问题,开发者通常使用autoconf之类的工具生成相应的configure脚本,而configure脚本就是用来屏蔽相应的平台差异,从而正确生成Makefile文件,然后make再根据configure的劳动成果(Makefile)完成编译链接工作.        
        至于"install or clean or uninstall",也只是对应着Makefile文件中不同的规则,关于Makefile的详细信息,朋友们可以自行查阅相关的文档.

一个例子
        下面是我在自己的pc机上源码安装tar工具的过程,权当做是上面这些步骤的一个具体事例吧:

  1. [[email protected] ~]# head -n 1 /etc/issue
  2. CentOS release 5.4 (Final)
  3. [[email protected] ~]# uname -sr
  4. Linux 2.6.18-164.el5
  5. [[email protected] ~]# gcc --version
  6. gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
  7. Copyright (C) 2006 Free Software Foundation, Inc.

复制代码

这个是我的系统信息。

  1. [[email protected] tools]# pwd
  2. /root/tools
  3. [[email protected] tools]# ls
  4. tar-1.23.tar.bz2
  5. [[email protected] tools]# tar jxvf tar-1.23.tar.bz2
  6. ......
  7. [[email protected] tools]# ls
  8. tar-1.23  tar-1.23.tar.bz2
  9. [[email protected] tools]# cd tar-1.23
  10. [[email protected] tar-1.23]# ls
  11. ABOUT-NLS     build-aux   configure     gnu      Makefile.am  po       src
  12. acinclude.m4  ChangeLog    configure.ac  INSTALL  Makefile.in  README   tests
  13. aclocal.m4    ChangeLog.1  COPYING       lib      Make.rules   rmt      THANKS
  14. AUTHORS       config.h.in  doc           m4       NEWS         scripts  TODO

复制代码

解压原文件包,可以发现其中包括了configure脚本和README文件。

  1. [[email protected] tar-1.23]# mkdir -v ~/tar
  2. mkdir: 已创建目录 “/root/tar”
  3. [[email protected] tar-1.23]# ./configure --prefix=/root/tar
  4. ......
  5. [[email protected] tar-1.23]# echo $?
  6. 0

复制代码

建立软件安装目录,并configure,检查configure返回结果,为0代表运行成功.

  1. [[email protected] tar-1.23]# ls -F
  2. ABOUT-NLS     ChangeLog.1     configure.ac  m4/          po/       tests/
  3. acinclude.m4  config.h        COPYING       Makefile    README    THANKS
  4. aclocal.m4    config.h.in     doc/          Makefile.am  rmt/      TODO
  5. AUTHORS       config.log      gnu/          Makefile.in  scripts/
  6. build-aux/    config.status*  INSTALL       Make.rules   src/
  7. ChangeLog     configure*      lib/          NEWS         stamp-h1

复制代码

可以看到Makefile文件已经被成功建立.

  1. [[email protected] tar-1.23]# less Makefile | grep install:
  2. || { echo "ERROR: files left after uninstall:" ; \
  3. install: install-recursive
  4. uninstall: uninstall-recursive

复制代码

在建立的Makefile中存在install和uninstall标号

  1. [[email protected] tar-1.23]#make
  2. ......
  3. [[email protected] tar-1.23]#echo &?
  4. 0

复制代码

make成功

  1. [[email protected] tar-1.23]#make install
  2. ......
  3. [[email protected] tar-1.23]# ls /root/tar
  4. bin  libexec  sbin  share
  5. [[email protected] tar]# cd /root/tar/bin
  6. [[email protected] bin]# ls
  7. tar
  8. [[email protected] bin]# ./tar --help
  9. ......
  10. [[email protected] tar-1.23]#echo &?
  11. 0

复制代码

安装并简单测试成功

时间: 2024-12-28 16:06:08

linux下源码安装软件的相关文章

Linux下源码安装CodeBlocks

Linux下源码安装CodeBlocks qianghaohao(CodingNutter) 一. 安装平台说明: CentOs6.4-i686  gcc-4.4.7 二. 下载最新源码: http://www.codeblocks.org/downloads 在此安装的是最新版:Code::Blocks 16.01 三. 阅读官方安装说明文档: http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on

Linux下源码安装Mysql5.5

本文主要介绍了如何在源码安装mysql5.5,所用系统为CentOS6.5 一.安装相应的开发环境 yum install -y ncurses-devel yum install -y libaio yum install -y bison yum install -y gcc-c++ yum install -y openssl-devel 二.安装cmake 跨平台编译器 # tar xf cmake-2.8.8.tar.gz # cd cmake-2.8.8 # ./bootstrap

图解Linux下源码安装PHP7.0.9 +Nginx

上一次,在<Linux下源码安装php7.0.6>,安装过PHP7.0.3,本文将记录安装PHP7.0.9过程. 测试环境 Linux 2.6.32-279.el6.i686 nginx-1.9.15.tar http://nginx.org/download/nginx-1.9.15.tar.gz php-7.0.9.tar.gz http://am1.php.net/distributions/php-7.0.9.tar.gz 安装Nginx wget http://nginx.org/d

Linux下源码安装JDK7

安装说明 安装环境:Red Hat Enterprise Linux7.1安装方式:源码安装 软件:jdk-7u80-linux-x64.gz 安装 #首先查看系统原有JDK信息 rpm -qa | grep java #删除原有OpenJDK安装,使用我们自己的JDK,减少问题出错率(不检查依赖,直接删除rpm包) rpm -qa|grep java|xargs rpm -e --nodeps #上传安装文件到 /usr/local/ #进入安装目录 cd /usr/local/ #删除原安装

Linux下源码安装nginx服务器以及部分配置

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(

Linux下源码安装编译mysql数据库

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 下面是mysql数据库源码安装的具体步骤: 环境:redhat6.5 所需要的包:mysql-boost-5.7.11.tar.gz cmake-2.8.12.2-4.el6.x86_64.rpm         #要求cmake版本2.8及其以上 ##########mysql############ 下载安装包并进行解压缩: mysql-

Linux下源码安装LAMP(CentOS 6.8 + Apache2.4 + MySQL5.5 + PHP7)环境

一.简介 PHP已经走过了20年的历史,PHP7对于上一版本的PHP5.*,在性能方面有了跨越式的提升,当然也有一些新增的特性和改变,具体大家可以参考网上更为详细的相关资料文档. 二.系统环境 系统平台:CentOS release 6.8 (Final) Apache版本:httpd-2.4.6.tar.gz MySQL 版本:mysql-5.5.53.tar.gz PHP版本:php-7.1.0.tar.gz 三.安装前准备 1.库文件准备 在安装PHP之前,应先安装PHP需要的最新版本库文

随笔:linux系统源码安装软件注意事项和步骤

1.创建要安装的软件的用户(以软件名为用户名), 设置该目录不允许登陆系统2.创建要安装的软件的安装包目录(用于下载存放软件源码包)3.cd到2步骤所创建的目录下4.wget -q 下载该源码软件包5.解压下载的软件源码包(tar zxvf命令),并cd到解压后的目录6.编译开始: ./configure .make.make install7.做软链接: ln -s 8.检查安装情况,ll命令9.语法检查 : 软件执行文件路径 -t ,如:/opt/nginx/sbin/nginx -t10.

linux下源码安装git

centos 6.5 下使用 yum 安装git,版本是1.7.1  可现在git都更新到2.6了,只能通过源码安装 # 创建配置文件 $ make configure # 如果已经安装了git-1.7.1,那么应该是安装在这个目录下的 /usr/libexec/git-core,因此指定 /usr 来覆盖之前的安装程序,注: 会自动安装到指定目录下的 libexec/git-core $ ./configure --prefix=/usr $ make; make install; 更多的安装