linux的共享对象与Window下的动态链接文件是一个等价的概念,但是不同的操作系统对共享对象的存储方式不同。而Linux 的共享库也是共享对象的形式,是将多个源文件编译为一个共享对象的方式,这个共享对象就是共享库,现在共享对象与共享库的概念已经不再着重区分。
1. Linux 编译共享对象
假设现有源文件 a.c ,将其编译为共享对象的语句为:
gcc -shared -fPIC a.c -o a.so
其中,-shared 指明该文件是一个共享对象, -fPIC 指定该共享对象采用与位置无关的编译方式,gcc 还有一个编译参数为 -fpic,它与 -fPIC 的区别在于小写的pic指令产生的共享对象更小,但是与操作系统有关,因此,通常采用 -fPIC 指令
在当前目录下假设有另一个源文件 b.c ,需要将其编译为共享对象,且该源文件依赖与共享