c - 在 Eclipse CDT 中链接到静态库时的重复步骤

标签 c ubuntu static-libraries eclipse-cdt cross-compiling

我在 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 的项目文件夹中(参见说明 here),这是有道理的,因为 libmiddle.a 依赖于 libbottom.a。

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

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

Q2。是否有任何我可以使用的编译器或链接器选项,以便我可以从 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?

关于c - 在 Eclipse CDT 中链接到静态库时的重复步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200459/

相关文章:

无法理解这个错误

c - 链表头始终设置为 NULL

visual-c++ - 静态库依赖

c# - 如何在C#项目中使用LIB文件?

c - Uft示例编译

c++ - 如何解决在 opencv 中显示空图像的问题?

python - 在 Ubuntu Azure VM 上找到 SQL Server 的 ODBC 驱动程序 13.0

ubuntu - Ubuntu 12 的动态防火墙规则或 iptables API?

linux - 从 Ubuntu 终端使用不同的命令行参数循环

gcc - 如何将D-Bus交叉编译到ARM?