源代码的编译与安装

标签: makefile压缩、解压缩编译器工作jobs工具
4852人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:567909次
    • 积分:7421
    • 等级:
    • 排名:第3266名
    • 原创:189篇
    • 转载:6篇
    • 译文:0篇
    • 评论:97条
    博客专栏
    文章分类
    最新评论