1、前言
2、动态链接库生产
动态链接库与普通的程序相比而言,没有main函数,是一系列函数的实现。通过shared和fpic编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。例如下面实现一个简单的整数四则运输的动态链接库,定义的caculate.h和caculate.c两个文件,生产libcac.so动态链接库。
程序代码如下:
编译生产libcac.so文件如下: gcc -shared -fpic caculate.c -o libcac.so
编写一个测试程序调用此动态链接库的函数,程序如下所示:
编译生产可执行文件main如下:gcc main.c -o main -l ./ -lcac (其中-l指明动态链接库的路径,-l后是链接库的名称,省略lib)
程序执行结果如下所示:
3、获取动态链接库的函数
linux提供dlopen、dlsym、dlerror和dlcolose函数获取动态链接库的函数。通过这个四个函数可以实现一个插件程序,方便程序的扩展和维护。函数格式如下所示:
dlopen()是一个强大的库函数。该函数将打开一个新库,并把它装入内存。该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的。写个测试程序调用上面生产libcac.so库如下所示:
程序执行结果如下所示:gcc call_main.c -o call_main -ldl