我正在构建一个链接到两个共享库 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 重新链接已经好的去库的设置在哪里?我试过不只对应用程序使用自动工具,手动给出链接线,但行为是一样的。
谢谢你的帮助,
伊兰