前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态链接库使用举例

动态链接库使用举例

作者头像
王亚昌
发布2018-08-03 15:53:20
2.2K0
发布2018-08-03 15:53:20
举报
文章被收录于专栏:王亚昌的专栏王亚昌的专栏

前面转了两篇动态链接库的使用方法,下面举例说下高级用法如何使用:

先附上源码,共五个文件

代码语言:javascript
复制
/*print.h*/ 
#include <stdio.h> 
#include <stdlib.h> 
void print(char * msg);  

代码语言:javascript
复制
/*print.c*/ 
void print(char * msg)  
{  
    printf("msg:%s/n", msg);  
}  

代码语言:javascript
复制
/*main.c*/ 
#include "print.h" 
int main(int argc, char ** argv)  
{  
 if (argc < 2)  
    {  
        printf("usage: %s msg/n", argv[0]);  
    }  
    print(argv[1]);  
 return 0;  
}  

代码语言:javascript
复制
#makefile.lib 
all : libmy.so  
SRC = print.c  
TGT = $(SRC:.c=.o)  
$(SRC) : print.h  
        @touch $@  
%.o : %.c  
        cc -c $?  
libmy.so : $(TGT)  
        cc -s -shared -o $@ $(TGT)  
        cp libmy.so /home/derrywang/so  

代码语言:javascript
复制
#makefile 
OBJECTS = print.o   
main : main.c libmy.so  
        gcc -o main main.c libmy.so  
libmy.so : $(OBJECTS)  
        gcc -shared -o libmy.so $(OBJECTS)  
clean:  
        rm -f main libmy.so $(OBJECTS)  

使用方法如下:

1. 建立存放so的目录

mkdir /home/derrywang/so

2. 修改系统配置文件

vim /etc/ld.so.conf

加入/home/derrywang/so

保存后,更新:/sbin/ldconfig –v

3.编译so,make -f makefile.lib

4.编译main,make

5.执行 ./main helloworld,会显示结果如下

msg:helloworld

6.验证下so是不是动态加载的,只需要修改print.c中打印,改成printf("msg=%s/n", msg);,然后执行make -f makefile.lib,再执行./main, 会显示结果如下

msg=helloworld

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010年07月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档