关闭

源代码的编译与安装

标签: makefile压缩、解压缩编译器工作jobs工具
5303人阅读 评论(1) 收藏 举报
分类:

绝大多数来自“源头”的源代码都是封装成所谓的tarball格式。

何为tarball?

一般而言,有份量的Open Source软件都含有相当多的文件,包括源代码、说明文件、编译支持文件、配置文件样本等。要将这么多文件完整的发布出去,典型的做法是以tar将它们封装成单一文件,再以gzip压缩。经过这两道处理手续的文件,就称为tarball文件。其扩展名是.tar.gz或.tgz。

tarball最主要的好处是可以在网络上方便传播,另一项好处是可以用标准工具解开。

解开tarball

解开tarball需要两个步骤:先用gunzip或gzip -d解压缩,然后使用tar展开解压缩后的文件。

例如,若要解开tarball.tar.gz文件:

#gunzip tarball.tar.gz
#tar xvf tarball.tar

或者,你也可以使用管道将gzip -d或gunzip的输出转接到tar的输入,避免产生中间的tar文件。例如:

#gzip –dc tarball.tar.gz  |  tar xv

在此例中,我们使用gzip的-c选项,避免它删除原本的tarball。

由于tar时常和压缩、解压缩操作牵扯在一起,所以GNU tar提供了z选项,自动帮你调用gzip(搭配c选项时)或gunzip(搭配x选项时)来处理tar所产生的文件。所以,使用GNU tar,只有一个步骤就可以解开压缩的tarball。

#tar xzvf tarball.tar.gz

编译Open Source软件

解开tarball之后的下一步,是将源代码编译成可执行的程序文件,也就是binaries文件。要完成编译,系统必须具备适当的开发工具软件,包括GNU C编译器与make编译工具。必要时,你可以另外安装其他的支持库或新版的配套软件按。

实际的编译程序随软件而异,但大致不脱离configure、make、make install三个基本步骤。

configure

对于较有规模Open Source软件包,在源代码目录树的顶层有一个configure script。一般而言,你不必修改或设定脚本就可以直接执行它。configure的作用是检验系统的实际环境是否具有所需要的编译器、函数库、工具以及其它支持项目(表头文件或其它软件包)。它利用这些实时收集的现场信息,产生一个适合该系统的Makefile文件,以便完成之后的编译工作。

configure的另一个工作,是让你设定编辑期选项。比方说,让你选择安装位置,是否支持特定功能、相关函数库的位置等。实际的编译期选项随软件而定,但通常你可以用configure --help命令列出所有编译期选项。

make

make原本是一个用来简化编译操作的工具软件,但后来衍生出许多用途,成为了管理者最爱的自动化工具。使用make时,必须编写一个Makefile文件,以规定的语法描述你的工作目标、各目标之间的依赖性以及满足依赖性所需要执行的动作。make能检查文件的修改时间,借此判断现实环境是否满足Makefile多描述的依赖性,并自动执行满足依赖性所需的动作,最后达成你要的工作目标。

对于编译工作而言,最终目的当然是“可执行文件”,而可执行文件本身是由许多“目标文件”连接而成,“目标文件”则是从源代码编译出来。每当程序员修改源代码,其文件修改日期必定比最后一次生成的“目标文件”更晚,make便可由此判断应该重新编译哪些源代码。

make语法:

make [-f makefile] [option […]] [target]

选项:

-f filename

使用特定的文件作为Makefile。

-j number_of_jobs

可同时运行的进程数。如果要加快编译速度,可以将number_of_jobs设定为CPU总数加1。少了没效果,多了没用。

大多数已编译好的软件会预先决定程序文件的位置。在大部分情况下,它们会期待能够放在/usr/local/bin,除非你在执行configure时指定了其它位置。为了方便将软件安装到默认位置,它们的Makefile包含一个特殊的目标,称为install。用户只要执行make install命令,文件就会被复制到特定的位置,并被赋予适当的权限。

示例:编译nano

1.先用tar的-z选项解压文件nano-1.2.1.tar.gz:

tar xzvf nano-1.2.1.tar.gz

2.解压后会产生一个新目录nano-1.2.1,进入此目录:

cd nano-1.2.1

利用ls -F命令查看此目录,你会发现里面有一个文件名为INSTALL。

3.如果你想要把程序安装到/opt目录下,而非默认目录下,则应该在执行configure的时候,以--prefix选项指出我们要安装的位置:

./configure --predix==/opt

几乎所有configure script都提供--help选项,让你列出所有的编译器选项。

4.使用configure script顺利产生Makefile之后,便可以使用make进行实质的编译过程:

make

5.编译完成后,就可以使用make install将它安装到你预选的目录:

make install

6.最后使用ls –F /opt/,可以查看它是否安装在了你指定的位置。

为了能够更方便使用安装好的软件,你的PATH变量应该要含有相关的路径。

0
0
查看评论

如何编译安装源码包

作者:北南南北 来自:LinuxSir.Org 提要:源码包软件的安装、卸载,给新手一点帮助和提示;本文也对类型的软件包的安装也做了一个小小的说明; ++++++++++++++++++++++++++++++++++++++++++++++ 正文: +++++++++++++++++++...
  • kepa520
  • kepa520
  • 2015-07-24 10:59
  • 630

八、Linux源码包编译和安装

linux 源码包编译以及安装
  • makyan
  • makyan
  • 2016-06-15 11:10
  • 1124

源码编译安装nginx

安装依赖软件1.安装编译工具gcc   gcc是一个开源编译器集合,用于处理各种各样的语言:C、C++、Java、Ada等,在linux世界中是最通用的编译器,支持大量处理器:x86、AMD64、PowerPC、ARM、MIPS等。    首先确定系统是否安装gcc[root@localhos...
  • zsl10
  • zsl10
  • 2016-08-11 13:22
  • 5563

Docker源码编译安装

安装之前 安装 遇到的问题与解决方案ERRORUnknown instruction ARG ERROR docker daemon启动失败 ERRORmake build出错一 ERROR make build出错二 make binary 出错 安装结果最近在尝试阅读docker源码,一直想弄明...
  • lwyeluo
  • lwyeluo
  • 2016-06-26 23:52
  • 9866

跨平台C++开源代码的两种常用编译方式

作者:朱金灿来源:http://blog.csdn.net/clever101            跨平台C++开源代码为适应各种编译器的编译,采用了两种方式方面来适配。一种是makefile方式。...
  • clever101
  • clever101
  • 2016-03-24 18:44
  • 3493

ubuntu下编译开源代码Super4PCS

Super4PCS是用于点云配准的一种快速,有效的方法,属于随机采样算法的一个变种。它基于4pcs算法配准速度非常慢的缺点进行改进,利用智能索引实现4pcs算法计算复杂度的显著降低。理论部分详细见论文, Super4PCS: Fast Global Pointcloud Registration ...
  • Yangzhihua1347142721
  • Yangzhihua1347142721
  • 2015-12-07 14:20
  • 1688

编译Android系统源码和内核源码

好长时间没有写blog了,之所以没有写,主要还是工作上的事,
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014-07-21 20:58
  • 44779

源代码的安装与卸载

源代码的安装与卸载1.源码包一般是tar.gz、tar Z、tgz或tar.bz2为后缀名,这种包首先要解压缩,因为大多数软件是提供./configure 配置软件的功能的,所以接着需要配置软件(大多数软件只需要一条命令就可以完成),make 下面就是安装了一般也就一条命令就可以make insta...
  • popkiler
  • popkiler
  • 2007-08-31 11:19
  • 4218

如何编译安装源码包软件

如何编译安装源码包软件作者:北南南北来自:LinuxSir.Org提要:源码包软件的安装、卸载,给新手一点帮助和提示;本文也对类型的软件包的安装也做了一个小小的说明;++++++++++++++++++++++++++++++++++++++++++++++正文:++++++++++++++++++...
  • fengyuruhui
  • fengyuruhui
  • 2007-04-11 08:52
  • 807

源码编译安装http2.4

0 目录 目录 环境 编译安装步骤 1 aprapr-util 2 安装httpd24 21 configure常用选项 22 常见错误 各目录内容 服务脚本修改 特性对比 1 环境 本篇是在CentOS 6.8编译安装httpd2.4。 由于在 http://blo...
  • wangzhenyu177
  • wangzhenyu177
  • 2017-11-22 13:45
  • 117
    个人资料
    • 访问:604434次
    • 积分:7752
    • 等级:
    • 排名:第3261名
    • 原创:192篇
    • 转载:6篇
    • 译文:0篇
    • 评论:99条
    博客专栏
    文章分类
    最新评论