【问题标题】:Can I get symbol names from one .so and make another .so see it?我可以从一个 .so 获取符号名称并让另一个 .so 看到吗?
【发布时间】:2017-04-30 12:26:17
【问题描述】:

我已经分别构建了 zliblibpng(这些库是什么无关紧要),所以我现在有了 libz.so 和 libpng.so。使用 dlopen()dlsym() 我从 libpng.so 获取函数指针并使用它们,但问题是,由于 libpng 依赖于 zlib,我得到链接器错误当 libpng 函数在自身内部调用一些 zlib 函数时。所以我的问题是:是否可以在不将 zlib 与 libpng 一起构建的情况下解决这个问题?我可以从 zlib 中获取符号名称并让 libpng 看到它们吗?

附:由于任务,我无法使用动态链接。

【问题讨论】:

  • 为什么要使用 dlopen/dlsym 而不仅仅是与库链接?
  • 只要确保你没有循环依赖。
  • 我不想使用 dlopen/dlsym,但我的老师想要 :)

标签: c++ linux compilation linker shared-libraries


【解决方案1】:

我找到了解决方案。只需在 dlopen 中使用 RTLD_GLOBAL 标志就可以了 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2018-07-12
    • 2019-05-29
    相关资源
    最近更新 更多