静态和共享库链接器错误
Posted
技术标签:
【中文标题】静态和共享库链接器错误【英文标题】:Static and shared libraries linker error 【发布时间】:2013-04-13 17:31:42 【问题描述】:我正在使用 NDK(android 的原生编译器工具)。所以,情况是这样的:
Static boost → Shared helpers
↓
Shared Game
Helpers
是一些用于游戏开发的共享库。 shared game
是一个包含在 java 代码中的库(作为本地库加载)。 Helpers lib 在内部使用 boost,链接器在这里很好。共享游戏通过 helpers api 使用 boost 但编译失败。
链接器无法解析 boost_system 库中的某些符号。所以,我确实是这样的:
Static boost → Shared helpers
| ↓
+----------- → Shared Game
现在它编译得很好。怎么了?我认为我可以将 boost 链接到 helpers 并在共享游戏中使用它们。
【问题讨论】:
【参考方案1】:没有错。正如您所说,您希望shared game
仅使用由shared helpers
动态库导出的shared helpers
API。你的错误是shared game
仍然依赖于一些裸露的 Boost API,这些 API 显然不是由 shared helpers
导出的。这就是为什么您也必须将 Boost 显式链接到 shared game
,以便正确解析这些 Boost 符号。
如果你想从 Boost API 中完全抽象出来并消除这种依赖,那么你必须通过扩展 shared helpers
来包装这个 Boost API(你需要在 shared game
中)(当然不要忘记也从shared helpers
导出这个包装的 API)。
【讨论】:
以上是关于静态和共享库链接器错误的主要内容,如果未能解决你的问题,请参考以下文章
linux ldconfig命令的作用(Linker Configuration 链接器配置)更新动态链接库(共享库)的链接器程序缓存