c - 无法在共享库 (.so) 中找到符号

标签 c linux debugging shared-libraries

我正在尝试映射应该存在于共享库(.so)内的函数的地址。我成功地打开了库,并尝试获取其中函数的地址,如下所示:

fn_read = dlsym (handle, "functionName");

但是我收到错误,经过检查,错误是找不到该符号。我非常确定我调用的电话是正确的。我还 100% 确定我尝试映射的函数包含在共享库本身中。我不知道在这里该怎么做...有人可以指出我可能忽略的一些可能的错误/要点吗?

谢谢, 福尔

最佳答案

尝试使用unix/linux命令nm -g <library>.so 。它将列出您所有的C风格符号。

请注意,C++ 参与“名称修改”,因此如果您没有导出“C 样式”符号,则名称很可能会被修改并且无法直接访问。 nm -gC <library>.so还将显示损坏的 C++ 名称。

如果您尝试访问 C++ 符号,并且名称修改导致了问题,请遵循 C++ FAQ light on mixing C and C++ 中的指南。可能会有所帮助。

关于c - 无法在共享库 (.so) 中找到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413266/

相关文章:

python - 通过pip安装错误: command 'x86_64-linux-gnu-gcc' failed在virtualenv中安装lxml

Java调试工具

c - 使用fork时内存是如何映射的?

linux - 在upstart配置文件中设置uid后如何写入pid文件

python - os.system 返回什么以及如何转换其输出?

python - 具有调试和 iPython 集成的 Python IDE?

java - 使用 Eclipse 远程调试 'eclipse RCP application"

c - 在 while 循环中重新扫描并分配变量

c - 返回二叉搜索树的平均深度的函数

使用后量子公钥算法在 C 中创建 X509 证书?