0

我正在构建一个链接到两个共享库 libA.so 和 libB.so 的自动工具应用程序。它们又包括共享库和静态(是的,反对推荐静态)库。静态库 libmetis 包含在 libA 和 libB 中,但不幸的是,版本不同。

说libA.so有libA1.so,libA2.so.... libmetis5.a

说libB.so有libB1.so,libB2.so.... libmetis4.a

在机器 1 上,运行 Ubuntu,最终应用程序的链接行如下所示

libtool mode=link application.c -lA -lB -o application

在运行 CentOS 的机器 2 上,最终应用程序的链接行如下所示

libtool mode=link application.c -lA -lA1 -lA2... -lmetis5 -lB -lB1 -lB2... -lmetis4 -o application

由于 libA 和 libB 都从它们在机器 2 中的组成库重新链接,因此我最终使 libA 和 libB 都具有相同版本的 libmetis,这会导致应用程序崩溃。

我如何控制或禁止 Libtool 重新链接已经好的去库的设置在哪里?我试过不只对应用程序使用自动工具,手动给出链接线,但行为是一样的。

谢谢你的帮助,

伊兰

4

1 回答 1

0

如果您实际上是在 CentOS 机器 2 上将 metris[45] 拉入 lib[AB] 中,那么它们就不会出现在链接线上(就像它们不会在 Ubuntu 机器 1 下一样)。

于 2012-10-17T16:46:37.120 回答