我在Ubuntu v12.10上使用Eclipse CDT/CodeSourcery Lite交叉编译我的C项目。
在EclipseCDT中,我有三个C项目:
exeTop//executable,它使用libmiddle.a中定义的函数
libmiddle.a//使用libbottom.a中定义的函数的静态库
libbottom.a//独立的静态库
依赖于任何其他库
为了构建libmiddle.a,我必须将libbottom.a复制到libmiddle的项目文件夹中(参见说明here),这与libmiddle.a依赖于libbottom.a是有道理的。
然而,在构建exeTop时,我不仅要链接到libmiddle.a,还要链接到libbottom.a(libmiddle.a已经链接到了libbottom.a)。
第一季度。为什么需要链接到libbottom.a from exeTop?
问题2。是否有任何编译器或链接器选项可供我使用,以便我可以从exeTop链接到libmiddle.a?

最佳答案

你说“为了构建libmiddle.a,我必须链接到libbottom.a,这和libmiddle.a依赖libbottom.a是有道理的。”我认为根本不是这样。实际上,libmiddle.a不能真正与libbottom.a链接,因为这不是静态库在Linux上的工作方式静态库只是对象文件的“存档”,没有使它们依赖于其他静态库的功能。把静态依赖项塞进静态库本身也不是典型的。
有关更多详细信息,请参见[UNIX] : Do I need to add all libraries in my project's makefile, that are used from a library, used in my project?

09-27 07:03