自动链接静态库的依赖关系

时间:2009-12-10 18:57:34

标签: c++ gcc linker mingw

我有一个静态库A,它也使用静态库B,C和D.

然后我有应用程序X和Y,它们都使用A,但不使用B,C或D.

是否有某种方法可以使X和Y自动看到A使用B,C和D并链接它们,这样我就不需要跟踪整个依赖树了所以我可以明确地传递每一个静态lib(Windows,Boost之类的东西很多)?

3 个答案:

答案 0 :(得分:2)

静态库不与其他静态库链接。只有在构建可执行文件(或共享库/ DLL)时才会执行链接,并且(当然)使用make进行跟踪的方法。

答案 1 :(得分:1)

我认为,从概念上讲,您可以将libs合并在一起以实现您想要的 - 它们仅仅是为链接器准备好的符号集合。话虽如此,我从未见过这样做的工具。 lib的二进制格式是编译器问题,因此它必须是mingw或gcc特定工具。

在了解Boost lib A使用哪个版本方面,除了找到A的文档之外,并没有太多帮助。

答案 2 :(得分:-1)

简单的方法是始终提供要链接的特定库A,B,C和D.对于真正的库,链接器仅检索所需的模块。

A与其他库有一些隐式链接的关键问题是它们不一定是唯一可识别的。例如,它应该使用版本2.0还是3.1? / usr / share / lib中的那个或/ usr / lib / X11 / xdm / share / lib中的那个?等