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

Cogl:有三个最常用的源包(mageym.tar.gz 或 XXXX.tar.bz2)。 事实上,那些源码区锡索由三个辅助工具填充的。 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)

Cogl的相关指示如下:

.$ tar zxvf XXXX.tar.gz

.$ tar jxvf XXXX.tar.bz2

./configure:

Cogl完成后正式开始加装(另外,在开始configure前,如有须要请采用补丁辅助工具给源码打上相应的补丁),首先跳转到源码Cogl目录,众所周知 , 开始configure前要仔细阅读源码 目录下的README或INSTALL文档,这儿列出了许多加装注意事项,configure只不过是一个脚本文档,在当前目录下输入./configure,shell就会运转 当前目录下的configure脚本,有一点要说明,在整个configure过程中,还没进行校对,configure只是做校对相关的准备工作,主要是对你当前工作做许多依赖检查 网络平台,如校对器是否加装,链接器是否存在,如果检测过程没严重错误,你是幸运的,configure脚本 将在当前目录下生成另一个文档 Makefile 用作下一场校对和链接。 总之configure支持它丰富的指示行参数,你能输入./configre –help来获取具体信息,最常用的大概有:

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

用作设置应用软件的加装目录。

制作:如果实用性过程恰当完成,则会在源目录中生成相应的 Makefile。 Makefile 仅包含一组文档依赖项以及校对和链接的相关关键步骤。 事实上,真正的校对和链接工作并不是由 make 完成的。 是的,make 只是一个通用辅助工具。 一般而言,make会根据Makefile中的规则调用相应的校对器,校对所有依赖于当前应用软件的源码,生成所有相关的目标文档,最后采用链接器生成最终的Executable程序:

.$ make

进行加装:当以上两步都恰当完成后,就意味着校对和链接过程已经完全完成,最后要做的是将可执行程序加装到恰当的位置。 在这一步,普通用户可能没相关目录的操作权限,暂时切换到root是个不错的选择,install只是Makefile文档中的一个标签,make install表示make辅助工具执行所有 Makefile文档中install标签下的相关操作,如果configure阶段没采用–prefix=/opt/XXX指定应用程序的加装目录,所以应用程序一般会加装到/usr/ 默认为本地/bin。 如果 /usr/local/bin 已经存在于您的 PATH 中,则加装基本结束:

.make install

make clean:make uninstall:这三个关键步骤只是加装的后续操作。 须要注意的是,clean和uninstall也是Makefile中对应的三个标签。 在执行这三个关键步骤时,Makefile 要保留,并且make clean用作在校对和链接过程中清除许多临时文档。 make uninstall是装载相关应用程序。 和make install类似,make装载也须要切换到root才能执行,但是许多Makefile中都省略了装载标签,小伙伴们。 他们能在对应的Makefile中自行查找。

为什么?这儿我试着解释一下上述关键步骤存在的其原因。 从C词汇的角度来看,一个程序要想从源码恰当生成相关的可执行文档,以下几个部分是必不可少的:源文档、校对器、汇编器、链接器、依赖库,透过以上关键步骤,好友们应该已经知道了 只有一步(make)来实际执行校对和链接操作。 其他关键步骤存在的其原因是什么?有一点是肯定的,我用C词汇在我的电脑上写了许多自娱自乐的小程序,并没采用configure or make install之类的指示。 最多我自己写一个Makefile来管理源文档。 依赖,但应用软件开发人员相同,他要考虑应用软件的可扩展性,他开发的应用软件不能只在自己的电脑上运转,对吧? 相同的网络平台甚至可能有相同的硬件架构,这导致 Makefile 的不可扩展性。 为了解决那个问题,开发人员通常会采用autoconf等辅助工具生成对应的configure脚本,configure脚本用来屏蔽对应的网络平台差异,从而恰当生成Makefile文档,接着make完成校对和链接工作 根据configure的劳动成果(Makefile)。至于加装或清扫或装载,只对应Makefile中的相同规则。 Makefile的详尽信息,好友们能自行参考相关文档。

一个例子以下是在我的PC上从源码加装tar辅助工具的过程,作为上述关键步骤的具体示例:

.[root@localhost ~] head -n 1 /etc/issue

.CentOS release 5.4 (Final)

.[root@localhost ~] uname -sr

.Linux 2.6.18-164.el5

.[root@localhost ~] gcc –version

.gcc (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] ls

.tar-1.23.tar.bz2

.[root@localhost tools] tar jxvf tar-1.23.tar.bz2

.[root@localhost tools] ls

.tar-1.23 tar-1.23.tar.bz2

.[root@localhost tools] cd tar-1.23

.[root@localhost 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

Cogl原文档包,能发现其中包括了configure脚本和README文档。

.[root@localhost tar-1.23] mkdir -v ~/tar

.mkdir: 已创建目录 /root/tar

.[root@localhost tar-1.23] ./configure –prefix=/root/tar

.[root@localhost tar-1.23] echo $?

.0

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

.[root@localhost 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文档已经被成功建立.

.[root@localhost tar-1.23] less Makefile | grep install:

. || { echo ERROR: files left after uninstall: ; \

.install: install-recursive

.uninstall: uninstall-recursive

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

.[root@localhost tar-1.23]make

.[root@localhost tar-1.23]echo

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!