linux共享库的编译


       linux下的库有两种:静态库和共享库。共享库,一般也被称为动态链接库。
       静态库的代码在编译过程中已经被载入可执行程序,因此体积较大,一般以libxxxx.a形式存在。
      共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小,一般以libxxxx.so的文件形式存在。

      库是别人写好的现有的,成熟的,可以复用的代码。实际项目开发中,每个程序都要依赖很多基础的底层库,不需要每个程序员去重新发明轮子,因此库的存在意义非同寻常。

      共享库的好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。

       ldd命令可以查看一个可执行程序依赖的共享库,

例如:


     要自己编写一个动态链接库,以供多个进程或其他程序员使用,分为以下两步:

 (1)编写代码,包括头文件和源文件;

 (2)将一步中编写的源代码文件编译成一个动态库:libXXXX.so。

     下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test.c(实际项目中一般有更多头文件和源文件,我们稍后将这几个文件编译成一个动态库libtest.so),以及一个测试文件:test_main.c 。

    共享库头文件:

#include "stdio.h"
void test();

   源文件:test.c:

void MyTestFunction()
{    
   printf("this is in test for shared object... ");
}


最后,将以上文件编译成一个动态链接库libtest.so,以方便别人可以直接使用这三个接口:


$ gcc test.c -fPIC -shared -olibtest.so

 

到此为止,大功基本高成,动态链接库已经成功生成了。  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值