Linux系统下安装源码软件的技巧

2016-02-20 03:14 2 1 收藏

下面图老师小编要向大家介绍下Linux系统下安装源码软件的技巧,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Linux教程 】

Linux下很多软件需要以源码包的方式发布的,安装起来非常麻烦,那么有什么简单的方法来安装源码软件呢?下面图老师小编就给大家介绍下Linux系统安装源码软件最简单的方法,一起来学习下吧。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

 Linux系统下安装源码软件的技巧

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

安装的具体步骤:

___FCKpd___0nbsp;tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)___FCKpd___0nbsp;cd XXXX___FCKpd___0nbsp;。/configure___FCKpd___0nbsp;make# make install

___FCKpd___1nbsp;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压缩后发布的,当然这两个步骤可以通过一条命令实现:

___FCKpd___2nbsp;tar zcvf XXXX.tar.gz XXXX(or tar jcvf XXXX.tar.bz2 XXXX)

解压的相关命令如下:

___FCKpd___3nbsp;tar zxvf XXXX.tar.gz___FCKpd___3nbsp;tar jxvf XXXX.tar.bz2

。/configure:

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

___FCKpd___5nbsp;。/configure --prefix=/opt/XXX

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

make:

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

___FCKpd___6nbsp;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文件一探究竟。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

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

[root@localhost ~]# head -n 1 /etc/issueCentOS release 5.4 (Final)[root@localhost ~]# uname -srLinux 2.6.18-164.el5[root@localhost ~]# gcc --versiongcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)Copyright (C) 2006 Free Software Foundation, Inc.

这个是我的系统信息。

[root@localhost tools]# pwd/root/tools[root@localhost tools]# lstar-1.23.tar.bz2[root@localhost tools]# tar jxvf tar-1.23.tar.bz2.。。。。。[root@localhost tools]# lstar-1.23 tar-1.23.tar.bz2[root@localhost tools]# cd tar-1.23[root@localhost tar-1.23]# lsABOUT-NLS build-aux configure gnu Makefile.am po srcacinclude.m4 ChangeLog configure.ac INSTALL Makefile.in README testsaclocal.m4 ChangeLog.1 COPYING lib Make.rules rmt THANKSAUTHORS config.h.in doc m4 NEWS scripts TODO

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

[root@localhost tar-1.23]# mkdir -v ~/tarmkdir: 已创建目录 /root/tar[root@localhost tar-1.23]# 。/configure --prefix=/root/tar.。。。。。[root@localhost tar-1.23]# echo $?

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

[root@localhost tar-1.23]# ls -FABOUT-NLS ChangeLog.1 configure.ac m4/ po/ tests/acinclude.m4 config.h COPYING Makefile README THANKSaclocal.m4 config.h.in doc/ Makefile.am rmt/ TODOAUTHORS config.log gnu/ Makefile.in scripts/build-aux/ config.status* INSTALL Make.rules src/ChangeLog configure* lib/ NEWS stamp-h1

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

[root@localhost tar-1.23]# less Makefile | grep install: || { echo ERROR: files left after uninstall: ; install: install-recursiveuninstall: uninstall-recursive

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

[root@localhost tar-1.23]#make.。。。。。[root@localhost tar-1.23]#echo &?

0

make成功

[root@localhost tar-1.23]#make install.。。。。。[root@localhost tar-1.23]# ls /root/tarbin libexec sbin share[root@localhost tar]# cd /root/tar/bin[root@localhost bin]# lstar[root@localhost bin]# 。/tar --help.。。。。。[root@localhost tar-1.23]#echo &?

0

安装并简单测试成功。

上面就是Linux下安装源码软件的最简单的方法介绍了,其实源码安装软件没有你想象的那么复杂,只要用对方法,也能很简单的完成软件安装。

来源:http://www.tulaoshi.com/n/20160220/1635891.html

延伸阅读
标签: 电脑入门
StarDict是款翻译软件,能够进行英汉互译,日语翻译等,因为StarDict的下载链接少,而有些朋友又想要使用这个软件,下面图老师小编就给大家介绍下CentOS如何安装StarDict。 因为学习linux的时候需要接触大量的英文资料,每次都要在线查很不方便。所以决定安装一个离线版的词典。很多网友推荐stardict,提供的下载链接是sourceforge.org的下...
    1、如何升级、编译内核? 如果你不想改变内核的版本,直接转到以下第四步。 1)在任何一个子目录下(但通常是在/usr/src/下)untar解开新的内核源程序: tar xvfz linux-x.x.xx.tar.gz (例如linux-2.0.35.tar.gz) 或者是打补丁(patch):  gzip -cd patch-2.0.35.gz | patch -p0 打完补丁直接...
标签: 电脑入门
zoneminder是Linux下免费开源的视频监控软件,很多人在安装的时候出现不少问题,甚至不会安装,今天图老师小编就给大家介绍下Linux安装zoneminder的方法,一起来学习下吧。 安装方法: 1) LAMP的安装。LAMP是Linux、Apache、MySql、PHP的首字母组合。也可以分别安装Apace2、Mysql、PHP,不建议这样做,一是因为麻烦,二是因为有些库可...
Oracle公司宣称在Linux下安装Oracle9i数据库至少要有512MB的内存和至少1GB或者两倍内存大小的交换空间,对于系统内存大于2GB的服务器,交换空间可以介于2GB—4GB之间。 如果是为了在一台仅有256M内存的普通PC机上试用Oracle9i,在分配了1GB左右的交换空间的情况下,也可以正常运行Oracle数据库。 要检查内存空间,登录进入Linux,在...
标签: Java JAVA基础
  在 Linux 上安装Apache+ApacheJServ+JSP 安装软件的顺序如下: I. 安装 Apache Web Server a. 使用 RPM 如果使用 RPM 套件,在取得 Apache Web Server 套件之后,只需要输入以下命令即可完成安装: [root@localhost root]# rpm -ivh apache-1.3.xx.i386.rpm ( xx 代表 Apache Web Server 版本 ) b. 使用 SOURCE 如果使用的是 A...

经验教程

649

收藏

9
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部