undefined symbol怎样解决

如题所述

undefined symbol解决方法:

问题分析

了解到 symbol 的概念后, 我们知道了 symbol 记录了变量在内存中的地址, 那么 undefined symbol 可能就是找不到该地址或者是非法不匹配的地址。

先查阅一下 undefined symbol 可能的原因 来指引一下接下来的排查方向

    依赖库未找到: 这是最常见的原因,一般是没有指定查找目录,或者没有安装到系统查找目录里

    链接的依赖库不一致: 编译的时候使用了高版本,然后不同机器使用时链接的却是低版本,低版本可能缺失某些 api

    符号被隐藏: 如果动态库编译时被默认隐藏,外部代码使用了某个被隐藏的符号。

    c++ abi 版本不一致: 最典型的例子就是 gcc 4.x 到 gcc 5.x 版本之间的问题,在 4.x 编辑的动态库,不能在 5.x 中链接使用。

    问题排查

    首先拉取出现问题的镜像开始本地复现问题, 然后使用 nm 命令来显示更多查找 symbol 时具体的信息

温馨提示:答案为网友推荐,仅供参考
相似回答