cmake扩展(4)——解决linux库版本冲突问题

背景:

在一个项目中引用了两个自己开发的库,而这两个库都直接或间接的调用了opencv,且两者调用的opencv版本不一样,导致打包运行时opencv符号冲突,导致崩溃。

解决的方案:

参考解决Linux多个动态库间的符号冲突问题,在其中一个库的cmakelists中添加-Wl,--exclude-libs,ALL和-Wl,-Bsymbolic标志,并编译成静态库解决。

原理:

通过添加这两个标志(其中任意一个都可以),表示当前库以及引用的库并不对外导出接口,且因为是静态库,所以当前库调用的opencv则被打包到静态库中,调用时无需链接外部的相关动态库,因此解决了opencv符号冲突的问题。

你可能感兴趣的:(cmake,cmake)