Linux基础:从源码安装软件

为什么要从源码安装软件

在什么情况之下,我们需要从源代码安装软件呢?我想不外乎这些情形:一种情况是软件放出了新的版本,而所用的发行版并没有及时跟进,这时候,想要尝鲜的话,就非得靠自己不可;另一种情形是不管是软件的开发者,还是现用的系统都没有提供可直接使用的二进制包,而自己又非要使用该软件,那么也需亲自出马才行;当然,还有其他的情形。总而言之,学会从源代码安装软件是一项非常重要的技能。

什么是make 与 configure

make 是一支程序,当执行make 时,make 会在当前目录下寻找 makefile 这个文本文件。 makefile 中定义了源码是如何编译的详细信息,如何调用 gcc对源代码进行编译生成目标文件,如何链接生成可执行文件。

makefile 是如何生成的呢? 通常,软件开发商都会提供一个检测程序来检测用户的操作系统环境,该程序检测完毕之后,就会主动的建立这个makefile 。

准备工作

那么,要如何才能从源代码安装软件呢?首先,你必须要做好为编译源代码所需的准备工作。这包括两个方面:

  1. 编译工具:要将源代码编译成可执行的二进制文件,编译工具必不可少: gcc , g++ , make , autoconfig 等等。在CentOS系列中,可以通过 yum -y groupinstall "Development Tools" 来安装。在 Ubuntu 中,可以从终端中执行 sudo apt-get install build-essential 指令来安装基本的编译工具。根据所编译程序的实际情况,你也可能需要安装其他一些工具。
  2. 编译依赖:除了安装基本的编译工具之外,为了顺利编译源代码,我们也要把该程序所需要的依赖安装好。包含系统提供的库函数, 以及第三方软件的依赖包。在CentOS系列中,可以通过 yum -y install  xxxx   xxxx-devel 来安装相应的依赖包。Ubuntu 系统可以通过 sudo apt-get build-dep 命令后跟包名的方式来准备所需的依赖。一般情况下,如果 configure 或者 make 报错,其报错信息都明确的指出缺少依赖,只需按要求做即可。或者把错误信息复制到 google 一下,即可愉快的解决。

源码安装3部曲: ./configure ; make && make install

在编译源代码之前,你一定把软件的源码包下载到了自己的硬盘上吧。一般而言,程序源码包经常被打包成 .tar.gz 和 .tar.bz2 这两种格式。前者可用 tar zxvf *.tar.gz 来解包,后者则用 tar jxvf *.tar.bz2。通常情况建议解压到 /usr/local/src 目录: # tar xf *.tar.gz -C /usr/local/src

通常,在解包后,我们应该阅读程序附带的相关说明文件,如 README(自述文件)、INSTALL(安装文件)等,以便了解程序的编译介绍。这一步超级重要!!!

当所有的事情都准备妥当了后,那么让我们来进行源代码编译的三部曲吧。

  1. 配置,建立makefile文件:这是编译源代码的第一步,通过 ./configure 命令完成。执行此步以便为编译源代码作准备。常用的选项有 --prefix=PREFIX,用以指定程序的安装位置。更多的选项可通过 --help 查询。也有某些程序无需执行此步。
  2. 编译:一旦配置通过,可即刻使用 make 指令根据makefile的定义,调用 gcc 来执行源代码的编译过程。视软件的具体情况而定,编译所需的时间也各有差异,我们所要做的就是耐心等候和静观其变。此步虽然仅下简单的指令,但有时候所遇到的问题却十分复杂。较常碰到的情形是程序编译到中途却无法圆满结束。此时,需要根据出错提示分析以便找到应对之策。需要执行 make clean , 然后再重新执行 make 指令。
  3. 安装:如果编译没有问题,那么执行 make install 就可以将程序安装到系统中了。

需要注意的是:上面的步骤必须一步一步的进行,只要其中的一个步骤无法成功,那么后续就完全没有办法再进行。

管理:目录规划,卸载,升级

  • 源码通常解压到 /usr/local/src 目录
  • 安装时最好安装在 /usr/local 目录
  • 将 软件的 man page 加入 man path 中, 编辑 /etc/man.config ,增加 MANPATH  项。
  • 把软件的 bin 目录加入到 PATH 环境变量, 编辑 /etc/profile.d/xxxx.sh, 增加 export PATH=$PATH:/usr/local/xxx/bin

若是觉得所编译的软件不够适用想要删除,又如何做呢?我们只需转到编译源代码的目录,执行 sudo make uninstall 命令。

时间: 2024-10-05 22:45:58

Linux基础:从源码安装软件的相关文章

linux下编译源码安装软件

Reference:http://itlab.idcquan.com/linux/set/39862.html 基本上就是三步: 以编译安装codeblocks为例: 首先解压源码包,假设解压到/tmp下 1. 终端运行./configure 之后系统会自动检查编译环境,如果缺少部件会提示并且STOP.按照提示安装缺少的包就好了. 例如 No package 'gtk+-2.0' found,提示缺少gtk2.0(可是我已经安装gtk2.8了啊喂) 没办法,只好apt-get install l

Python学习第六天----Linux内存管理、进程管理、RPM包安装管理及源码安装软件

Linux内存管理.进程管理.RPM包安装管理及源码安装软件 一.交换分区     交换分区其实就相当于Windows系统下的虚拟内存的概念,当物理内存不够用的时候,由操作系统将硬盘的一块区域划分出来作为内存使用.具体使用方法如下:      [[email protected] ~]# fdisk -l 磁盘 /dev/sdb:16.1 GB, 16106127360 字节,31457280 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):5

Linux源码安装软件

Linux源码安装软件 源码安装:最原始最有效的安装方式 三部曲(1)—./configure xxx 生成makefile文件,随后需要的安装信息都是从这一步中获取 (2)make 根据makefile的指示开展编译工作,利用gcc将原始码编译为目标文件目标文件使用动态或静态函数库产生一个完整的可执行文件 (3)make install根据makefile文件里关于install的项目,将所编译完成的文件安装到指定目录一般有etc.lib.bin.man等目录 源码安装是费力不讨好的,这种方式

在 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系统下源码安装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平台下源码安装mysql多实例数据库

Linux平台下源码安装mysql多实例数据库[[email protected] ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6191/mysqld [[email protected] ~]# ss -tlunp | grep 330tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=6191,fd=10)) [[email protected] ~]# syst

linux下源码安装软件

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

salt源码安装软件和yum安装软件

上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添加,则无需再次添加 3,服务管理 除了有启动脚本,还要watch配置文件. ? 晚上睡前早上起来多撸几遍基本的软件安装就可以自己写了.下面是源码安装nginx.涉及到基础依赖包安装(yum安装),以及pcre安装(源码安装)和nginx(源码安装) 其中有些坑,调整了老半天才搞好,甚是蛋疼,要注意图