- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 编写专业的GNULinux程序.ppt
4-3动态加载机制 dlopen filename 是全路径 不是全路径 (1) 用户环境变量中的LD_LIBRARY_PATH值; (2) 动态链接缓冲文件/etc/ld.so.cache中找到库的列表,可由ldconfig工具维护 (3) 目录/lib,/usr/lib (4)当前目录 flag 1) RTLD_LAZY : 表明在动态链接库的函数代码执行时解决。 2) RTLD_NOW : 表明在dlopen返回前就解决所有未定义的符号,一旦未解决,dlopen将返回错误。 4-3动态加载机制 dlsym 取函数执行地址 dlclose 关闭动态连接库 只有当refcnt=0时,才会卸载 4-3动态加载机制 /*int getdate(DATETYPE *)*/ … … dp=dlopen(SOFILE,RTLD_LAZY); if (dp==NULL) { fputs(dlerror(),stderr); exit(1); } getdate=dlsym(dp,“getdate); … … dlclose(dp); 1.打开动态链接库 2.从动态库中取”getdate”函数的地址 3.关闭打开的动态库 dlerror()会记录错误信息 阶段总结 系统环境变量的创建和使用 系统环境变量的管理函数以及整体环境:environ变量 创建和使用动态函数库 动态函数库的工作原理简介 本章结构 参数,选项 Linux系统简介及安装 Linux/Unix进程模型 为什么说GNU程序更好? 环境管理函数 整个环境:environ 创建动态库 创建使用共享函数库 标准C和原始C 系统环境变量 基本的命令行处理技术 选项解析:getopt()和getopt_long()函数 引言 Linux/Unix文件模型 选项和参数约定 库的依赖关系 系统的环境变量 动态的加载共享库函数 介绍linux的文件模型和进程模型,以及GNU程序较好的原因 介绍命令行参数的解析技术,主要是介绍getopt()和getopt_long()函数的用法 如何创建环境变量,以及如何用函数管理环境变量 创建和使用共享库,以及共享函数的工作原理,附带介绍共享库的依赖关系 实验 任务一:Unix V7 echo程序 任务二:长选项参数解析 任务三:系统环境参数 任务四:创建和使用动态库 附加任务: 阅读getopt.c和getopt1.c的代码 * * 1、1969年由Ken Thompson在AT T贝尔实验室实现,运行在一台DEC PDP-7计算机上,后来Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再 加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。经C语言改版后分发给科研机构和大学。 2、 70年代末,到Unix V6版本时,ATT认识到Unix的价值,成立了Unix系 统实验室,宣布对unix产品拥有所有权 3、加州大学伯克利分校计算机系统研究小组(CSRG)对Unix进行研究出BSD Unix(ARPNET最新利用BSD实现TCP/IP) 4、ATT和CSRG的官司 5、ATT吸收BSD Unix的优点,推出Unix System V版本,从此以后,BSD(Berkeley Software Distribution) 6、 Unix和Unix System V形成了当今Unix的两大主流,现代的Unix版本大部分都是这两个版本的衍生产品。 Unix操作系统的历史漫长而曲折,它的第一个版本是1969年由Ken Thompson在AT T贝尔实验室实现的,运行在一台DEC PDP-7计算机上。这个系统非常粗糙,与现代Unix相差很远,它只具有操 作系统最基本的一些特性。后来Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再 加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。从那以后,Unix系统开始了令人瞩目的发展。 由于此时ATT还没有把Unix作为它的正式商品,因此研究人员只是在实验室内部使用并完善它。正 是由于Unix是被作为研究项目,其他科研机构和大学的计算机研究人员也希望能得到这个系统,以便进行自己的研究。A TT以分发许可证的方法,对Unix仅仅收取很少的费用,大学和研究机构就能获得Unix的源代码以进行研 究。Unix的源代码被散发到各个大学,一方面使得科研人员能够根据需要改进系统,或者将其移植到其他的硬件环境中去 ,另一方面培养了懂得Unix使用和编程的大量的学生,这使得Unix的普及更为广泛。 由于操作系统的开发相当困难,只有少数的计算机厂商,如IBM、Digital等大
文档评论(0)