我可以从一个 .so 中获取符号名称并创建另一个 .so 吗?

Can I get symbol names from one .so and make another .so see it?

我已经分别构建了 zliblibpng(这些库是什么并不重要),所以我有 libz.so 和 libpng.so 现在。使用 dlopen()dlsym() 我从 libpng.so 获取函数指针并使用它们,但问题是,因为 libpng取决于 zlib,当 libpng 函数调用自身内部的某些 zlib 函数时,我会收到链接器错误。所以我的问题是:如果不将 zlib 与 libpng 一起构建,是否可以解决这个问题?我能以某种方式从 zlib 获取符号名称并让 libpng 看到它们吗?

P.S。由于任务,我无法使用动态链接。

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