2013-03-04 81 views
1

我在Ubuntu v12.10上使用Eclipse CDT/CodeSourcery Lite交叉编译我的C项目。链接到Eclipse中的静态库时的重复步骤CDT

在Eclipse CDT,我有这三个C项目:

  1. exeTop //使用在libmiddle.a定义使用在libbottom定义函数
  2. libmiddle.a //静态库功能的可执行文件。一点不 一个
  3. libbottom.a //独立的静态库依赖于任何其他库

为了建立libmiddle.a,我必须复制丽将bbottom.a转换为libmiddle的项目文件夹(参见说明here),这与libmiddle.a相关,这取决于libbottom.a。

但是,当构建exeTop时,我不仅要链接到libmiddle.a,还要链接到libbottom.a(libmiddle.a已经链接到)。

Q1。为什么需要从exeTop链接到libbottom.a?第二季度销售价格下降,第二季度销售价格下降,第三季度销售价格下降。有没有我可以使用的编译器或链接器选项,以便我可以从exeTop链接到libmiddle.a?

回答

0

你说:“为了构建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?

+0

为了澄清,以建设libmiddle.a没有错误我不得不libbottom.a复制到libmiddle的项目文件夹。 – jpen 2013-03-04 11:48:25

+0

这是为什么?构建libmiddle不应该需要libbottom。什么是失败的命令行? – 2013-03-04 12:15:38

+0

我错了!你是对的。我刚刚尝试从libmiddle中删除libbottom,libmiddle在没有libbottom的情况下构建。 – jpen 2013-03-04 12:23:17