【问题标题】:Calling Internal Functions in a Shared Library在共享库中调用内部函数
【发布时间】:2021-02-26 07:10:43
【问题描述】:

我想调用glibc 中的未导出 函数。准确地说,我想打电话给ptmalloc_init()。问题是符号没有导出。我可以访问glibc 源代码。因此,我在glibc 源代码中添加了一个名为ptmalloc_init_caller() 的函数并编译了该库。但是我再次在nm -D 输出中看不到任何内容,因此,不能从外部调用添加的函数。构建glibc 有什么特殊被省略的吗?

【问题讨论】:

    标签: compilation shared-libraries elf glibc dynamic-linking


    【解决方案1】:

    您需要将ptmalloc_init 函数设为非static 并将其添加到malloc/Versions,例如在GLIBC_PRIVATE 部分下。然后它将被导出。如果不更改malloc/Versions,则生成的版本脚本中不会提及该函数(参见构建树中的libc.map),其符号将具有隐藏可见性。

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多