动态库在程序启动时被装载。在linux下一般是.so文件。当一个应用程序装载了一个动态库后,其它应用程序仍可以装载同一个动态库。这个被多进程同时使用的动态库在内存中只有一个副本。下面演示如何创建,使用动态库:
源文件share_lib.c内容如下:
#include <stdio.h> void print1() { printf("hello world1\n"); } void print2() { printf("hello world2\n"); }
使用以下命令生成动态库:
gcc -shared -fPIC -o share_lib.so share_lib.c
其中-fPIC表示生成位置无关的代码,-shared表示将位置无关的代码制作为动态库。
要使用些动态库,需要建一个头文件share_lib.h,内容如下:
extern void print1(); extern void print2();
测试文件main1.c的内容如下:
#include <stdio.h> #include "share_lib.h" int main() { print1(); print2(); return 1; }
使用以下命令生成可执行文件app1:
gcc main1.c ./share_lib.so -o app1