1

我在 Ubuntu v12.10 上使用 Eclipse CDT/CodeSourcery Lite 交叉编译我的 C 项目。

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

  1. exeTop // 使用 libmiddle.a 中定义的函数的可执行文件
  2. libmiddle.a // 使用 libbottom.a 中定义的函数的静态库
  3. libbottom.a // 不依赖任何其他库的独立静态库

为了构建 libmiddle.a,我必须将 libbottom.a 复制到 libmiddle 的项目文件夹中(请参阅此处的说明),这是有道理的,因为 libmiddle.a 依赖于 libbottom.a。

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

Q1。为什么需要从 exeTop 链接到 libbottom.a?

Q2。有没有我可以使用的编译器或链接器选项,以便我可以从 exeTop 链接到 libmiddle.a?

4

1 回答 1

0

你说“为了构建 libmiddle.a,我必须链接到 libbottom.a,这是有道理的,因为 libmiddle.a 依赖于 libbottom.a。” 我认为根本不是这种情况。事实上,libmiddle.a 不能真正链接到 libbottom.a,因为这不是静态库在 Linux 上的工作方式。静态库只是目标文件的“档案”,并没有使它们依赖于其他静态库的功能。将静态依赖项填充到静态库本身中也不常见。

有关更多详细信息,请参阅[UNIX]:我是否需要在项目的 makefile 中添加所有库,这些库从库中使用,在我的项目中使用?

于 2013-03-04T11:35:51.060 回答