动态链接库问题_20170309

2017-03-09  本文已影响0人  SOUL_CY

动态链接库原理

  1. 用时查找
  2. 查找路径:

动态库冲突场景

  1. 环境主要有以下几种:
  1. 对于动态库而言,由于是用时查找,所以程序在这几个环境的动态库不一定一致,这可能会出问题
  2. 例如,某服务在开发环境时编译依赖了libcrfpp,服务正常,但发布环境的libcrfpp与开发环境不一致,服务就会异常

问题如何发现

  1. 这种问题在编译阶段很难发现,因为动态库是用时加载
  2. 可以在项目首次部署在机器上时检查编好的lib包
  3. 命令:
  1. 如果没结果,恭喜你lib包在该环境没有依赖问题,否则,会看到有未定义的符号错误
  2. 根据该错误信息猜测是哪个lib库,找到合适的lib库替换。

更好的解决方法

  1. 最好能整理出项目依赖的关键基础库,打成包放在项目中管理
  2. 在项目启动时将该包路径export,这样就能避免动态库版本不一致问题
上一篇下一篇

猜你喜欢

热点阅读