Linux-源码软件安装方法

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

安装的具体步骤:

$ tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)
$ cd XXXX
$ ./configure
$ make
# make install
$ make clean

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

# make uninstall

复制代码

用来卸载软件

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

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

复制代码

解压的相关命令如下:

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

复制代码

./configure:

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

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

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

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

$ make

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

#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工具的过程,权当做是上面这些步骤的一个具体事例吧:

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

这个是我的系统信息。

[[email protected] tools]# pwd
/root/tools
[[email protected] tools]# ls
tar-1.23.tar.bz2
[[email protected] tools]# tar jxvf tar-1.23.tar.bz2
......
[[email protected] tools]# ls
tar-1.23  tar-1.23.tar.bz2
[[email protected] tools]# cd tar-1.23
[[email protected] tar-1.23]# ls
ABOUT-NLS     build-aux   configure     gnu      Makefile.am  po       src
acinclude.m4  ChangeLog    configure.ac  INSTALL  Makefile.in  README   tests
aclocal.m4    ChangeLog.1  COPYING       lib      Make.rules   rmt      THANKS
AUTHORS       config.h.in  doc           m4       NEWS         scripts  TODO

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

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

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

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

复制代码

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

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

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

[[email protected] tar-1.23]#make
......
[[email protected] tar-1.23]#echo &?

0

make成功

[[email protected] tar-1.23]#make install
......
[[email protected] tar-1.23]# ls /root/tar
bin  libexec  sbin  share
[[email protected] tar]# cd /root/tar/bin
[[email protected] bin]# ls
tar
[[email protected] bin]# ./tar --help
......
[[email protected] tar-1.23]#echo &?

0

安装并简单测试成功

时间: 2024-12-20 11:34:14

Linux-源码软件安装方法的相关文章

linux源码编译安装php出现 cannot find -lltdl

原因: 在编辑php时添加的“–with-mcrypt”选项造成. 解决方法: 1.如果不需要mcrypt,那么编辑php时去掉该选项,然后再make.make install. 2.如果需要mcrypt,那么需要安装libltdl libltdl在libmcrypt软件包中就有,具体过程: #cd /software/libmcrypt-2.5.8/libltdl #./configure –enable-ltdl-install #make #make install 这个时候再回到php的

linux源码包安装软件

Linux源码安装和yum安装区别: 1.yum安装可以看成是在线安装的一种方式,你只需要yum install 软件名,系统就自动根据yum源配置文件中的镜像位置去下载安装包了,并可以自动分析所需的软件依赖关系,自动安装所需的依赖软件包.此方式适合初学者,简单方便,不用考虑依赖关系. 2.源码安装方式是需要自己到网上下载源码包,然后解压安装.此方式可以指定配置参数,更加灵活方便,兼容性更强. Linux源码安装好处: 1.软件根据用户需要定制2.用于二次开发 源码包及其编译安装: 1.源码包打

18、Linux源码包安装详解

安装源码包 安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件.如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的.使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的. 源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言.Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件.所以如果你的机

Linux 源码编译安装 MySQL 5.5.x

Linux 环境:CentOS 6.5 MySQL 版本:5.5.20,附下载地址:[点击下载] 1.安装cmake MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具. 因此,我们首先要在系统中源码编译安装cmake工具. 下载 cmake [[email protected] soft]# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz 解压 [[email protec

Linux 源码包安装

01.RPM 包默认安装路径 /etc/:配置文件给安装mul /usr/bin/:可执行的命令安装目录 /usr/lib/:程序使用的函数库保存位置 /usr/share/doc/:基本软件使用手册保存位置 /usr/share/man/:帮助文件保存位置 02.源码包安装位置  =>  /usr/local/软件名/ 启动方法:(1)./etc/rc.d/init.d/httpd start(绝对路径) (2). service  httpd  start 如果Apache启动不起来,需要设

Linux源码编译安装和卸载

Linux下正常的编译安装/卸载 源码的安装一般由3个步骤组成: 配置(configure) 编译(make) 安装(make install). configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表. 其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,

SUSE Linux源码编译安装MySQL 5.6

这篇文章主要介绍了SUSE Linux下源码编译方式安装MySQL 5.6过程分享,本文使用SUSE Linux Enterprise Server 10 SP3 (x86_64)系统,需要的朋友可以参考下.MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文

mysql源码包安装方法

mysql安装前的准备工作 环境准备:linux系统  cmake   mysql安装包 卸载掉rpm包安装的mysql Yum -y remove mysql mysql-server Rm -rf /etc/my.cnf 安装解决依赖关系:yum -y install ncurses-devel openssl-devel bison gcc gcc-c++ mysql源码包安装 将源码包上传到/usr/local/src Tar xzf mysql安装包 yum -y install cm

Linux 源码的安装 3个步骤

源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表. 其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/sha

linux源码编译安装OpenCV

为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以类比安装.此文针对,有一点Linux常识(会使用终端)的读者. 源代码准备 如果不想在安装过程中,一步步的下载.编译.安装,可以先一次性下载完需要用到的源代码. X264: ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ FFMPEG: htt