【发布时间】:2012-07-06 21:20:58
【问题描述】:
假设我正在开发一个静态库foo.a,它使用了bar.so 中的一个函数。
我如何构建这个库,使得在他们的项目中使用foo.a 的任何人都不必明确链接到bar.so?
【问题讨论】:
-
我知道这是可能的,因为 SFML 不需要我链接 -lX11 或 -lGL。
-
我很确定,你不能这样做,除非你得到一个
bar的静态库,例如你的例子 -bar.a(正如我在你的另一个问题中已经说过的,我无法提供更多信息,因为我不熟悉SFML或XLib) -
你的目标是什么?您是否只想避免在链接时引用
bar.so,因为这样更方便?或者您是否希望能够在不重新链接的情况下将bar.so替换为someother.so? -
不,我希望人们不需要链接到 -lGL、-X11 和我需要使用的任何其他动态库。
-
在这种情况下,user315052 提到的
dlopen是一个矫枉过正的 IMO。您获得的东西几乎不值得额外的编码工作和可维护性问题。最好坚持使用额外的链接器选项,没有简单的方法可以避免它们。
标签: c++ static-linking dynamic-linking