Linux下使用动态链接库和静态链接库的项目建立及单步调试.doc

Linux下使用动态链接库和静态链接库的项目建立及单步调试.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux下使用动态链接库和静态链接库的项目建立及单步调试

Linux下使用动态链接库和静态链接库的项目建立及单步调试 在Linux下程序的主要调试工具是gdb,如喜欢用图形界面,可用insight。下面对动态链接库和静态链接库的单步调试就是采用gdb+insight来完成的。 一、动态链接库的建立和单步调试 1、采用动态链接库的项目的建立 准备编写两个函数,一个用于查询当前日期getdate,一个用于查询当前时间gettime,并将这两个函数存于动态链接库my.so中。为此,需要做以下几项工作。 1.1 编写用户接口文件datetime.h /* datetime.h : 纵横软件制作中心雨亦奇编写, 2001-06-28. */ #ifndef __DATETIME_H #define __DATETIME_H /* 日期结构 */ typedef struct { int year; int mon; int day; }DATETYPE; /* 时间结构 */ typedef struct { char hour; char min; char sec; }TIMETYPE; /* 函数原型说明 */ #ifdef SHARED int (*getdate)(DATETYPE *d); #else int getdate(DATETYPE *d); #endif #ifdef SHARED int (*gettime)(TIMETYPE *t); #else int gettime(TIMETYPE *t); #endif #endif 1.2 编写getdate.c,源程序如下: * getdate.c : 纵横软件制作中心雨亦奇编写, 2001-06-28. */ #include time.h #include datetime.h int getdate(DATETYPE *d) { long ti; struct tm *tm; time(ti); tm=localtime(ti); d-year=tm-tm_year+1900; d-mon=tm-tm_mon+1; d-day=tm-tm_mday; } 在getdate函数中,先调用time取得以秒计的系统时间,再用localtime函数转换一下时间结构,最后调整得到正确的日期。 1.3 编写gettime.c,源程序如下: /* gettime.c : 纵横软件制作中心雨亦奇编写, 2001-06-28. */ #include time.h #include datetime.h int gettime(TIMETYPE *t) { long ti; struct tm *tm; time(ti); tm=localtime(ti); t-hour=tm-tm_hour; t-min=tm-tm_min; t-sec=tm-tm_sec; } gettime函数与getdate函数相仿,先用time函数取得以秒计的系统时间,再用localtime函数转换一下时间结构,最后返回当前的时间(不需调整)。 1.4 调用动态链接库的应用程序 /************************************/ /* 文件名称: dy.c */ /* 功能描述: 动态链接库应用示范程序 */ /* 程序编写: 纵横软件制作中心雨亦奇 */ /* 编写时间: 2001-06-28 */ /************************************/ #include stdio.h /* 包含标准输入输出文件 */ #include stdlib.h #include dlfcn.h /* 包含动态链接功能接口文件 */ #define SOFILE ./my.so /* 指定动态链接库名称 */ #define SHARED /* 定义宏,确认共享,以便引用动态函数 */ #include datetime.h /* 包含用户接口文件 */ main() { DATETYPE d; TIMETYPE t; void *dp; char *error; puts(动态链接库应用示范); dp=dlopen(SOFILE,RTLD_LAZY); /* 打开动态链接库 */ if (dp==NULL) /* 若打开失败则退出 */ { fputs(dlerror(),stderr); exit(1); } getdate=dlsym(dp,getdate); /* 定位取日期函数 */ error=dlerror(); /* 检测错误 */

文档评论(0)

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

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

1亿VIP精品文档

相关文档