快速业务通道

Linux动态链接库.so文件的创建与使用

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-23
函数的原型,检查一下语法;

  第10-11行: 包含动态链接库功能头文件,并定义动态链接库名称;

  第13-14行: 定义宏SHARED以便引用14行的头文件datetime.h中的动态函数说明;

  第25行: 用dlopen打开SOFILE共享库,返回句柄dp;

  第27-31行: 检测dp是否为空,为空则显示错误后退出;

  第33行: 用dlsym取得getdate函数动态地址;

  第35-40行: 如果dlerror返回值不为空,则dlsym执行出错,程序显示错误后退出;

  第42-43行: 执行getdate调用,输出当前日期;

  第45行: 用dlsym取得gettime函数动态地址;

  第47-52行: 如果dlerror返回值不为空,则dlsym执行出错,程序显示错误后退出;

  第54-55行: 执行gettime调用,输出当前时间;

  第57行: 用dlclose关闭dp所指示的动态链接库;

  第59行: 程序退出,返回0值.

  2.2.2 编写维护文件

  维护文件makefile内容如下:

  ----------------------------------------------------------------------

  1 # makefile : 纵横软件制作中心雨亦奇编写, 2001-06-28.

  2

  3 all : dy

  4

  5 DYSRC = dy.c

  6

  7 DYTGT = $(DYSRC:.c=.o)

  8

  9 %.o : %.c

  10 cc -c $?

  11

  12 # 动态库应用示范程序

  13 dy : $(DYTGT)

  14 cc -rdynamic -s -o $@ $(DYTGT) -ldl

  15

  ----------------------------------------------------------------------

  维护文件说明:

  第3行: 定义所有需要维护的模块;

  第5行: 定义源程序;

  第7行: 定义目标文件;

  第9-10行: 定义.o文件依赖于.c文件,维护代码为“cc -c 变动的源文件名”;

  第13-14行: 定义dy依赖于变量DYTGT指示的值,维护代码中采用-rdynamic选项以指定输出文件为动态链接的方式,选项-s指定删除目标文件中的符号表,的选项-ldl则指示装配程序ld需要装载dl函数库.

  2.2.3 运行make命令

  运行make后将产生执行文件dy,运行后将产生如下类似信息:

  动态链接库应用示范

  当前日期: 2001-06-28

  当前时间: 10:06:21

  当删除my.so文件时,将出现以下信息:

  动态链接库应用示范

  my.so: cannot open shared object file: 文件或目录不存在

  3、小结

  LINUX创建与使用动态链接库并不是一件难事.

  编译函数源程序时选用-shared选项即可创建动态链接库,注意应以.so后缀命名,最好放到公用库目录(如/lib,/usr/lib等)下面,并要写好用户接口文件,以便其它用户共享.

  使用动态链接库,源程序中要包含dlfcn.h头文件,写程序时注意dlopen等函数的正确调用,编译时要采用-rdynamic选项与-ldl选项,以产生可调用动态链接库的执行代码.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号