程序加载动态加载So文件,该怎么处理

程序加载动态加载So文件
讨教一个经验.昨天依靠大牛的经验我解决了so的问题.但是我今天在整合程序的时候发现在生成可执行程序的时候:
 g++  -g ./src/*.cpp -L sopath -lsoname -o main -ldl 

其中我-lsoname (就是libsoname.so的缩写).
----------
问题来了:我每次编译出一个so我貌似都需要重新编译整个程序(就是 -lsoname 使得程序可以找到不同的so)。这样做意义就不大 了。项目应该是添加so配置好xml就可以动态加载新功能的。(我的xml配置没有任何问题)。

-----------
我的想法是这样:应该在我给libsoname起一个通用前缀的名字,比如libserverXXX.so  其中XXX是login request query等字符的占位符。然后我只需要编译一遍:g++  -g ./src/*.cpp -L sopath -lserver* -o main -ldl 这样我动态往里面加so的时候程序就可以探测到新加载的模块,也就是可以使用新功能。
-----------
我的实际情况是:貌似我做不出来。我的想法错哪里了?还是说我的解决思路本身就是错误的。
谢谢! 

------解决思路----------------------
如果是我,在统一的一个libserver.so中提供login、request、query等导出函数。