文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院操作系统 LinuxLINUX动态链接库高级应用
精品广告
推荐TOP10
·高效使用Linux的七个好习惯
·为何Linux比Windows更安全?
·Linux和Unix最常用的网络命令
·Linux系统下安全防护十大招数
·Linux各种服务器的架设
·Linux操作系统下用单网卡捆绑双IP
·恢复被误删除的Linux文件
·在Linux服务器上做备份和恢复
·Linux中网络参数的意义及其应用
·linux知识大全
阅读TOP10
·LINUX动态链接库高级应用
·口袋里的Linux:在您的U盘上运行SLAX
·自己动手做一个迷你型Linux操作系统
·Linux操作系统命令行下的文本编辑器VI介绍
·Linux攻略 SSH实用技巧及常用命令使用说明
·RedHat Linux 9升级内核
·Linux阵营事后诸葛:再发起绝地反攻
·VIA-威盛南桥集成AC97声卡驱动安装指南
·优化Linux 系统服务来提高引导速度
·Linux各种服务器的架设

LINUX动态链接库高级应用

日期:2008年9月3日 作者: 查看:[大字体 中字体 小字体]


在《LINUX下动态链接库的创建与应用》一文中,我介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函数,装入指定的动态链接库中指定的函数,然后加以执行.程序中使用很少的动态函数时,这样的做法尚可.如果程序需要调用大量的动态函数,那么采用这样的编程手段将是非常繁复的,所以我们必须使用一种更为聪明的办法,以减少代码量,提高工作效率.这就是现在我要举例介绍的《LINUX动态链接库高级应用》.
 
注:本文举的例子类似上篇文章,只是文件的内容已做相应修改,裁减了不少.示例程序ady.c和两个动态函数的源程序getdate.c与gettime.c仅修改了头文件的名字,其内容不再列出.本文使用头文件为adatetime.h.


要想高效地应用LINUX动态链接库(尤其是用户自己编写的),需要做以下工作:
 
一、编写合格的动态链接库头文件
 
C语言的头文件,可供一个或多个程序引用,里面一般定义程序所需的常量,自定义类型及函数原型说明等.其中的函数原型说明,则供编译器检查语法,用于排除引用参数时类型不一致的错误.只有编写合格的动态链接库头文件,程序员才能正确使用动态链接库内的函数.


动态链接库头文件要采用C语言标准格式,其中的动态函数原型定义,不必象上文介绍的那样用(*动态函数名)的描述形式.请看下面的例子:(每行开始的数字为所在行行号,为笔者添加,供注解使用)


1 /* adatetime.h : 纵横软件制作中心雨亦奇(zhsoft@371.net)编写, 2002-03-06. */

3 #ifndef __DATETIME_H

5 #define __DATETIME_H

7 /* 日期结构 */
8 typedef struct
9 {
10 int year;
11 int mon;
12 int day;
13 }DATETYPE;
14 
15 /* 时间结构 */
16 typedef struct
17 {
18 char hour;
19 char min;
20 char sec;
21 }TIMETYPE;
22 
23 int getdate(DATETYPE *d); /* 取当前日期 */
24 int gettime(TIMETYPE *t); /* 取当前时间 */
25 
26 #endif
27 


注:与上文的datetime.h文件比较,从该头文件第23,24行可以看到,动态函数getdate,gettime的原型定义改变了,不再使用(*getdate),(*gettime)的格式了(这种格式使用较为罗嗦).

 


二、正确编译与命名动态链接库

 


为了让GCC编译器生成动态链接库,编译时须加选项-shared.(这点须牢记)


LINUX系统中,为了让动态链接库能被系统中其它程序共享,其名字应符合“lib*.so*”这种格式.如果某个动态链接库不符合此格式,则LINUX的动态链接库自动装入程序(ld.so)将搜索不到此链接库,其它程序也无法共享之.


格式中,第一个*通常表示为简写的库名,第二个*通常表示为该库的版本号.如:在我的系统中,基本C动态链接库的名字为libc.so.6,线程 pthread动态链接库的名字为libpthread.so.0等等.本文例子所生成的动态链接库的名字为libmy.so,虽没有版本号,但也符合所要求的格式.


生成该动态链接库的维护文件makefile-lib内容如下:


1 # makefile : 纵横软件制作中心雨亦奇编写, 2002-03-07.

3 all : libmy.so

5 SRC = getdate.c gettime.c

7 TGT = $(SRC:.c=.o)

9 $(SRC) : adatetime.h

[1] [2] [3] [4] [5] [6] 下一页 

上一篇:如何在搜索引擎中使您的排名靠前?

下一篇:LINUX系统中动态链接库的创建与使用


相关软件: 相关文章:
·中文姓对应英文姓
·LINUX动态链接库高级应用
·JSP和JSF双剑合并 打造完美Web应用
·Win XP优化设置和宽带应用技巧
·学十条小经验 Excel文档打印得心应手
·自定义应用程序配置文件(app.config)
·从零开始 无线网络终极应用宝典

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号