Linux软件包管理剖析.docx

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
日期 编写/修改人 版本 记录 2015-03-01 IRE Ver 1.0 创建 日期 审阅人 版本 密级 状态 意见 2015-03-05 IRE Ver 1.0 内部公开 发布 无 RHEL6 软件包的安装与管理 –飞翔 学习目标:x 了解linux执行文件的种类 学习传统方法安装、管理软件包 学习通过rpm来安装、管理软件包 学习yum服务器的配置,安装管理软件包 一、 首先我们来介绍linux下的可执行文件的种类 在redhat enterprise linux中执行命令,大部分室执行文件。执行文件可以分如下种类 1、 程序(program) 程序一种存储cpu指令的机器码的特殊文件,由于存储在程序文件中得极其指令都是采用二进制编码,直接交给cpu执行。所以我们习惯陈可执行文件为二进制文件。 一般来说程序执行的速度比较快,。但是最大缺点室程序文件无法在不同的cpu中执行 2、 链接库(library) 链接库与程序类似,也是一个存储机器码的二进制文件;但链接库与程序文件的不同之处在于,程序文件会存储执行进入点。所以linux系统会知道从哪里开始执行文件的内容;而连接库则没有存储执行进入点得信息,因而无法直接启动redhat linux中得链接库 3、 脚本(script) 脚本就是以文本的格式存储要cpu执行的命令。支持脚本类型的程序语言都会提供一个编译器(interpruter)程序。每次执行一个脚本时,redhatlinux都会吧脚本中的命令交由编译器,转译成cpu可以执行的机器码,然后才让cpu去执行这些机器码。 通常情况下脚本的好处就是平台无关性,只要你得机器提供适当的编译器,就可以直接执行脚本,缺点就是执行速度远远,慢于程序文件。 产生机机器命令的方法 为了让cpu可以顺利的执行高级语言开发出来的应用软件,必须把高级语言的转译成机器码,这个动作成为编译,而负责执行编译工作的程序就成为complier(编译器) 编译的几个步骤: 1、 检查成语代码的正确性 2、 把程序代码转换成为机器码 3、 程序代码中如果使用其他链接库的机器码,则将其链接 4、 产生操作系统的相关信息 5、 存储为可执行文件。其中不管理员较为密切的可能是连接程序库的这个动作 链接: 链接室指把存储在链接库中得机器码存储在程序中,这样开发人员就不用重复编写相同的程序代码以加快程序的开发速度。链接分为两种:动态链接和静态链接 静态链接: 在进行链接时,把执行程序执行期间需要用到的机器码复制到可执行文件中,这种链接方法称为静态链接“static link”.静态链接而成的程序有如下几个特性: 1、产生的执行文件体积庞大:使用静态链接产生的程序必须吧所有用到的机器码复制一份出来,存储在执行文件中,这样使程序文件的体积比较庞大。 2、执行时需要较多的空间:在程序执行时加载程序文件需要更多的空间。 3、可以独立使用:静态链接的程序已经存储了程序执行期间所需的机器码,不会因为某些链接库不存在或者版本不符合而无法执行。 动态链接: 在进行链接时,编译器不会把链接库的机器码复制到程序文件中,而只是存储执行文件执行时需要的链接库,该链接库的版本,以及函数的符号等信息。当执行这个程序时,便可以根据执行文件中所记录的链接信息,加载所需要的链接库以及机器码。这样的链接方式就称为dynamic link 动态链接。 动态链接的特性: 体积小:使用动态链接产生的执行文件,因为只需要存储机器码的信息,所以执行文件的体积小。 需要内存空间少:由于动态链接执行文件小,所以执行这个程序需要的内存空间就少 无法独立使用:执行动态链接而成的程序时,会依赖所需要的链接库。如果两台机器上得链接库信息不一致,就会使执行文件无法在另外一台机器上执行 查寻执行文件的链接方法 如果想知道某个程序的链接方式,我们可以使用file来查看,file查询到一个文件时,会显示该程序的文件中得机器码和链接方法等信息;如果是statically linked就是静态,如果显示dynamic linked就是动态 下面来看一个例子 这个信息就是显示的/bin/ls 采用elf格式,存储者64位lsb标准执行文件采用动态链接库 并且已经提出了(stripped)当中的调试信息 查询链接库ldd来完成 Ldd的每条记录的显示格式library=library_file(memory_address) 注意ldd命令只能查询采用动态链接而成的程序文件 软件的依赖性 如果采用动态连接库的方式制造出来的执行文件,那么管理这些软件时就要特别注意是否会有依赖性的问题。所谓依赖性,就是指软件执行时需要用到其他的组件,这个时候该软件就与其他的组件有了依赖性了。 我们还是以ldd /bin/

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档