Linux程序运行中加载动态库
Linux C/C++程序通常是在编译的时候链接依赖的动态库.
同时,也提供一种在运行时加载动态库的方法.(具体man dlopen中有说明和使用范例.)
应用的场景,暂时想到是 :
类似插件.不用更新整个应用程序,通过更新或新增动态库,实现更新或者增加功能.
在之前的一个开源的项目streamtunner中就有使用这种. 用户可以更新或自行新增网络源.
方便更新和调试
由不同开发人员实现统一接口,按照动态库的形式输出. 调用者可以在不修改源码同时不用重新编译主程序的情况下,调用接口实现.
针对第二种场景, 下面是一个示例.(main中是拷贝自man dlopen中的范例.)
Makefile
all:
@#动态库编译.
gcc -Wall -c -o sort_a.o sort_a.c
gcc -shared -fPIC -o libsorta.so sort_a.o
@#可执行程序编译.
gcc -Wall -o sortcall main