Linux动态链接库的使用

  • 时间:
  • 浏览:0
  • 来源:神彩大发幸运飞艇_彩神大发幸运飞艇官方

/*caculate.c文件*/#include "caculate.h" //求好几个 多 数的和 int add(int a, int b) { return (a + b); } //减法 int sub(int a, int b) { return (a - b); } //除法 int div(int a, int b) { return (int)(a / b); } //乘法 int mul(int a, int b) { return (a * b); }

  在实际开发过程中,各个模块之间会涉及到或多或少通用的功能,比如读写文件,查找、排序。为了减少代码的冗余,提高代码的质量,还时需将哪几种通用的每种提取出来,做出公共的模块库。通过动态链接库还时需实现多个模块之间共享公共的函数。后后看《tcp连接池池员的自我修养》中讲到tcp连接池池的链接和倒进过程,哪几种玩意都在底层的,对于理解tcp连接池池的编译过程有好处。http://www.ibm.com/developerworks/cn/linux/l-dynlink/博文介绍了tcp连接池池的链接和倒进过程。本文重点在于应用,要怎样编写和使用动态链接库,后续使用动态链接库实现一好几个 多 插件tcp连接池池。

1、前言

  动态链接库与普通的tcp连接池池相比而言,这麼main函数,是一系列函数的实现。通过shared和fPIC编译参数生产so动态链接库文件。tcp连接池池在调用库函数时,只时需连接上或多或少库即可。同类下面实现一好几个 多 简单的整数四则运输的动态链接库,定义的caculate.h和caculate.c好几个 多 文件,生产libcac.so动态链接库。

编译生产可执行文件main如下:gcc main.c -o main -L ./ -lcac   (其中-L指明动态链接库的路径,-l后是链接库的名称,省略lib)

tcp连接池池执行结果如下所示:

2、动态链接库生产

编译生产libcac.so文件如下: gcc -shared -fPIC caculate.c -o libcac.so

编写一好几个 多 测试tcp连接池池调用此动态链接库的函数,tcp连接池池如下所示:

 3、获取动态链接库的函数

  linux提供dlopen、dlsym、dlerror和dlcolose函数获取动态链接库的函数。通过或多或少好几个 函数还时需实现一好几个 多 插件tcp连接池池,方便tcp连接池池的扩展和维护。函数格式如下所示:

tcp连接池池代码如下:

dlopen()是一好几个 多 强大的库函数。该函数将打开一好几个 多 新库,并把它倒进内存。该函数主要用来加载库中的符号,哪几种符号在编译的后后是问你的。写个测试tcp连接池池调用上面生产libcac.so库如下所示:

tcp连接池池执行结果如下所示:gcc call_main.c -o call_main -ldl