首页 > > > Linux系统中“动态库”和“静态库”那点事儿

今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻。在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情。



准备两个库的源码文件st1.c和st2.c,用它们来制作库libmytest.a,如下:

静态库文件libmytest.a已经生成,用file命令查看其属性,发现它确实是归档压缩文件。用ar -t libmytest.a可以查看一个静态库包含了那些obj文件:



然后/etc/ld.so.conf.d/目录下存放了很多*.conf文件,如下:

其中每个conf文件代表了一种应用的库配置内容,以mysql为例:


OK,万事俱备,只欠东风。如何将这些文件编译成一个我们所需要的so文件呢?可以分两步来完成,也可以一步到位:
方法一:

2、再生成so文件:

方法二:











原文作者:;如有侵权,请联系管理员删除。