DLL hell 是指 Windows 系统上动态库的新版本覆盖旧版本,且新版本不能兼容旧版本的问题. 例如:装新软件,但原有的软件运行不起来了. Linux 系统下也同样面临着和 Windows 一样的动态库多版本的问题,其严重影响软件的升级和维护. 那么此问题该如何解决的呢?Linux 系统为解决这个问题,引入了一套机制,如果遵守这个机制来做,就可以避免这个问题.但是这只事一个约定,不是强制的.但是建议遵守这个约定,否则同样也会出现 Linux 系统版的 DLL hell 问题. 下面来…
soname( Short for shared object name) 其是应用程序加载dll 时候,其寻找共享库用的文件名.其格式为 lib + math+.so + ( major version number) 其只包含major version number,换句话说,也就是只要其接口没有变,应用程序都可以用,不管你其后minor build version or build version. 简单来说: -Wl,-soname -Wl 告诉编译器将后面的参数传递到连接器.而 -so…