发布网友 发布时间:2023-09-14 15:49
共1个回答
热心网友 时间:2023-09-14 19:12
undefined symbol解决方法:
问题分析
了解到 symbol 的概念后, 我们知道了 symbol 记录了变量在内存中的地址, 那么 undefined symbol 可能就是找不到该地址或者是非法不匹配的地址。
先查阅一下 undefined symbol 可能的原因 来指引一下接下来的排查方向
依赖库未找到: 这是最常见的原因,一般是没有指定查找目录,或者没有安装到系统查找目录里
链接的依赖库不一致: 编译的时候使用了高版本,然后不同机器使用时链接的却是低版本,低版本可能缺失某些 api
符号被隐藏: 如果动态库编译时被默认隐藏,外部代码使用了某个被隐藏的符号。
c++ abi 版本不一致: 最典型的例子就是 gcc 4.x 到 gcc 5.x 版本之间的问题,在 4.x 编辑的动态库,不能在 5.x 中链接使用。
问题排查
首先拉取出现问题的镜像开始本地复现问题, 然后使用 nm 命令来显示更多查找 symbol 时具体的信息