




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
linux下源码安装软件在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包,不同的最终用户经过编译就可以正确运行,这也是非常符合c语言的设计哲学的,一次编写,到处编译么,而常见的二进制包,比如rpm和deb,软件开发者必须为每种特定的平台定制好专门的软件包,这个通过rpm文件的后缀名就可以初见端倪,比如ppc,sparc,i386之类,在这里不做过多的陈述,其实源码安装软件远没有很多朋友想象的那么复杂,下面我在这里尽可能详细的做一些陈述,如有谬误,欢迎朋友们拍砖!安装的具体步骤:1. $ tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)2. $ cd XXXX3. $ ./configure4. $ make5. # make install复制代码1. $ make clean复制代码安装完成后用来清理临时文件1. # make uninstall复制代码用来卸载软件解压: 最常见源码包的就两种(XXXX.tar.gz or XXXX.tar.bz2),其实这些源码包都是由2个工具压缩而成的,tar.gz结尾的文件用到的工具是tar和gunzip,而tar.bz2结尾的文件所使用的工具是tar和bzip2,之所以这样做是因为,tar仅仅能够打包多个文件但是没有压缩的功能,而gz和bz2却刚好相反,仅能够压缩单个文件,这样我们常见的源码包实际上是通过tar先将不同的源文件打包,然后再通过gunzip或者bzip2压缩后发布的,当然这两个步骤可以通过一条命令实现:1. $ tar zcvf XXXX.tar.gz XXXX(or tar jcvf XXXX.tar.bz2 XXXX)复制代码解压的相关命令如下:1. $ tar zxvf XXXX.tar.gz2. $ tar jxvf XXXX.tar.bz2复制代码./configure: 解压完成就正式开始安装了(补充一点,开始configure之前,如有必要,请使用patch工具为源码打上相应的补丁),首先跳转到源码的解压目录,众所周知,开始configure前还是应该仔细阅读源码目录下的README或者INSTALL文件,好多安装中的注意事项在这里都有所罗列,configure实际上是一个脚本文件,在当前目录中键入./configure,shell就会运行当前目录下的configure脚本,有一点必须说明,在整个configure过程,其实编译尚未进行,configure仅仅是做编译相关的准备工作,它主要对您当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在,如果在检测的过程没有任何错误,你很幸运,configure脚本会在当前目录下生成下一步编译链接所要用到的另一个文件Makefile,当然configure支持及其丰富的命令行参数,可以键入./configre -help获取具体的信息,最常用的恐怕就是:1. $ ./configure -prefix=/opt/XXX复制代码它用来设置软件的安装目录.make: 如果configure过程正确完成,那么在源码目录,会生成相应的Makefile文件,Makefile文件简单来说包括的是一组文件依赖关系以及编译链接的相关步骤,事实上真正的编译链接工作也不是make所做的,make只是一个通用的工具,一般情况下,make会根据Makefile中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件,最后再使用链接器生成最终的可执行程序:1. $ make复制代码make install: 当上面两个步骤正确完成,代表着编译链接过程已经完全结束,最后要做的就是将可执行程序安装到正确的位置,在这个步骤,普通用户可能没有相关目录的操作权限,临时切换到root是一个不错的选择,install只是Makefile文件中的一个标号,make install代表着make工具执行Makefile文件中install标号下的所有相关操作,如果在configure阶段没有使用-prefix=/opt/XXX指定应用程序的安装目录,那么应用程序一般会被默认安装到/usr/local/bin,如果/usr/local/bin已经存在于您的PATH中,那么安装已经基本结束:1. #make install复制代码make clean:make uninstall: 这两个步骤只是安装的后续操作,有一点必须注意,clean和uninstall也是Makefile文件中相应的两个标号,执行这两个步骤的时候Makefile文件必要保留,make clean用来清除编译连接过程中的一些临时文件,make uninstall是卸载相关应用程序,与make install类似,make uninstall也需要切换到root执行,不过uninstall标号在好多Makefile中都被省略掉了,朋友们完全可以自己在相应的Makefile文件一探究竟.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工具的过程,权当做是上面这些步骤的一个具体事例吧:1. rootlocalhost # head -n 1 /etc/issue2. CentOS release 5.4 (Final)3. rootlocalhost # uname -sr4. Linux 2.6.18-164.el55. rootlocalhost # gcc -version6. gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)7. Copyright (C) 2006 Free Software Foundation, Inc.复制代码这个是我的系统信息。1. rootlocalhost tools# pwd2. /root/tools3. rootlocalhost tools# ls4. tar-1.23.tar.bz25. rootlocalhost tools# tar jxvf tar-1.23.tar.bz26. .7. rootlocalhost tools# ls8. tar-1.23tar-1.23.tar.bz29. rootlocalhost tools# cd tar-1.2310. rootlocalhost tar-1.23# ls11. ABOUT-NLS build-aux configure gnu Makefile.ampo src12. acinclude.m4ChangeLog configure.acINSTALLMakefile.inREADME tests13. aclocal.m4 ChangeLog.1COPYING lib Make.rules rmt THANKS14. AUTHORS config.h.indoc m4 NEWS scriptsTODO复制代码解压原文件包,可以发现其中包括了configure脚本和README文件。1. rootlocalhost tar-1.23# mkdir -v /tar2. mkdir: 已创建目录 “/root/tar”3. rootlocalhost tar-1.23# ./configure -prefix=/root/tar4. .5. rootlocalhost tar-1.23# echo $?6. 0复制代码建立软件安装目录,并configure,检查configure返回结果,为0代表运行成功.1. rootlocalhost tar-1.23# ls -F2. ABOUT-NLS ChangeLog.1 configure.acm4/ po/ tests/3. acinclude.m4config.h COPYING Makefile README THANKS4. aclocal.m4 config.h.in doc/ Makefile.amrmt/ TODO5. AUTHORS config.log gnu/ Makefile.inscripts/6. build-aux/ config.status*INSTALL Make.rules src/7. ChangeLog configure* lib/ NEWS stamp-h1复制代码可以看到Makefile文件已经被成功建立.1. rootlocalhost tar-1.23# less Makefile | grep install:2. | echo ERROR: files left after uninstall: ; 3. install: install-recursive4. uninstall: uninstall-recursive复制代码在建立的Makefile中存在install和uninstall标号1. rootlocalhost tar-1.23#make2. .3. rootlocalhost tar-1.23#echo &?4. 0复制代码make成功1. rootlocalhost tar-1.23#ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外科复习测试有答案(一)
- 绿化品牌行动计划
- 领跑家居构筑未来
- 立秋:节气文化探析
- 2025建筑工程劳务分包合同木工
- 2025通信设备租赁合同
- 2025年:再探合同违约现象
- 种植技术黑龙江水稻低温防病害促早熟技术
- 湖北省艾滋病流行病学探讨
- 2025年标准承包合同范本协议书示例
- 一般现在时(英语)知识讲解课件
- 零售药店处方药销售自查整改报告word(范文)
- 腹腔镜下保留脾脏胰体尾切除术
- Q∕GDW 12070-2020 配电网工程标准化设计图元规范
- 《孤独症认知训练》PPT课件
- 汽车半悬挂系统建模与分析(现代控制理论大作业)
- 高分子化学6离子聚合阳离子
- 毕业设计论文土木工程专业五层单身宿舍楼框架结构设计
- 石膏板项目可行性分析与经济测算(范文参考)
- 晋江文件归档目录
- 数独题库(初级、高级、专家级、骨灰级、附赠数独题纸)
评论
0/150
提交评论