网站大量收购独家精品文档,联系QQ:2885784924

Linux操作系统基础4_包管理.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux操作系统基础4 --包管理 gdb 北方工业大学检测技术与自动化系 2007年研究生春季课程 主要内容 Linux应用程序基础 包管理tar、 rpm 文件压缩 编程基础3:gdb 上节内容回顾 文件及文件系统的基本概念 虚拟文件系统VFS Linux文件物理存储的方法 Ext2,ext3, CRAMFS 编译工具GNU gcc 本节课程目标 掌握RPM软件包管理系统的原理 掌握使用RPM工具管理软件包的方法 掌握普遍的软件源码包的编译安装方法 掌握一般运行库的安装配置 调试工具gdb Linux应用程序基础 Linux应用程序与命令的关系 Linux应用程序组成 Linux应用程序与命令的关系 内部命令 外部应用程序 两种形式的命令操作方法相同 Linux应用程序组成 开放源代码 开放源代码与应用程序的编译安装 应用补丁 编译前的配置 编译与安装 开放源代码(Cont.) 应用程序开发模式 商业开发模式 开放源代码开发模式 开放源代码工程的特点 免费分发的源代码 模块化的体系 集市式的开放 开放源代码方式提供用户自行编译安装的代码,使得应用程序更方便自我定制和升级 应用补丁 使用diff命令生成补丁文件 语法:diff 原始文件 新文件 使用patch命令应用补丁文件 语法:patch 原始文件 补丁文件 编译前的配置 编译与安装 编译源代码,链接目标文件 安装应用程序二进制代码 库管理 库的基本概念 库的安装与配置 库的基本概念 静态函数库(static libraries)在程序执行前就加入到目标程序中去了,它实际上就是简单的一个普通的目标文件的集合, 一般来说习惯用“.a” 作为文件的后缀,可以用ar这个程序来产生静态函数库文件,ar是archiver的缩写 共享函数库(shared libraries)在当一个可执行程序在启动的时候被加载,如果一个共享函数库正常安装,所有的程序在重新运行的时候都可以自动加载最新的函数库中的函数, 如果想覆盖某个库中的一些函数,用自己的函数替换它们, 同时保留该库中其他的函数的话,则可以在/etc/ld.So.preload中加入想要替换的库(.O结尾的文件),这些preloading的库函数将有优先加载的权利 动态加载函数库(dynamically loaded libraries)可以在程序运行的任何时候动态的加载。 库的安装与配置 /etc/ld.so.conf /etc/ld.so.cache ldconfig LC_LIBRARY_PATH :可以用来指定函数库查找路径的,而且这个路径通常是在查找标准的路径之前查找。这个是很有用的,特别是在调试一个新的函数库的时候,或者在特殊的场合使用一个非标准的函数库的时候。 LD-PRELOAD:列出了所有共享函数库中需要优先加载的库文件,功能和/etc/ld.SO,preload类似。 LD-BIND-NOW:一般来讲, 函数在调用之前是不会让程序查找的。设定这个选项会使得函数库一旦被加载,所有的查找便会发生,同时也造成起始的时间较慢。 LD_NOWARN:该选项只适用于a.out。一旦设定了该选项,它会告诉加载器必须处理fatal—warnings的警告信息。使用方式如下: #LD-NOWARN=true;export LD-NOW ARN。 LD-WARN:该选项只适用于ELF。设定这一项时,它将致命信息的“Cant find library” 转换成警告信息。 LD-TRACE—LOADED-OBJECTS:只适用于ELF格式的程序。该选项会使程序以为它们是由ldd所执行的。 事实上还有更多的环境变量影响着程序的调入过程,它们的名字通常就是以LD-或者RTLD-打头。这些都是有/lib/ld—linux.SO这个loader来实现的。 允许用户控制动态链接函数库将涉及到setuid/setgid这个函数, 如果特殊的功能需要的话。因此,GNUloader通常限制或者忽略用户对这些变量使用setuid和setgid。如果loader通过判断程序的相关环境变量判断程序的是否使用了setuid或者setgid,如果uid和euid不同,或者gid和egid不一样,那么loader就假定程序已经使用了setuid或者setgid。这就意味着如果你使得uid和gid与euid和egid分别相等,然后调用一个程序,那么这些变量就可以完全起效。 动态加载为例的简单程序 #includedlfcn.h #includestdio.h main() {void* libc;void(*printf-cal1)(); if(1ibc=dlopen( ]libllibc.SO,5 ,RTLD-LAZY)) {print

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档