如何在Eclipse CDT中将静态库链接到静态库

How to link static library into static library in Eclipse CDT

本文关键字:静态 链接 Eclipse CDT      更新时间:2023-10-16

我有三个项目A, B和C。A是通用的,被B和C使用。B有点特殊,到目前为止只有c使用。

现在,由于我希望A和B尽可能地被重用,我认为它们都是静态库。

所以我将A和B链接到静态库,将C链接到可执行文件,但是当我想链接C时它给出了A函数的undefined reference误差。因此,我在链接器选项中添加了库A来解决这个问题,但它没有帮助。

所以我想:当我想部署B时,我也必须部署A才能链接。是否有一种方法将静态库a链接到静态库B,这样我就不必部署2个文件?

如果是这样,我如何使用Eclipse CDT实现这一点,因为我找不到一个地方为归档器定义额外的目标。

添加

我在linux下工作,但这些东西也应该在windows下工作。但主要是我需要一个linux的解决方案来继续发展。

编辑

现在我"解决"了这个问题,将A和B链接到静态库中,然后使用剩下的*。o文件链接到可执行文件,但我不认为这是好的

更改链接顺序。C使用B, B使用A, C不直接使用A,对吗?

你写的

:

gcc -o C -lA -lB

它将不起作用。你写的

gcc -o C -lB -lA

如果是CDT,您可以进入option->C/c++ Build->setting->XXX C link ->Libraries,更改A和B的顺序。

另一种方法:使用-u选项。

看到这个:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html但是,我从来没有成功过。谁能告诉我如何使用-u选项?

一个静态库不能与另一个静态库链接。我认为因为静态库不是可执行代码,所以完整的链接过程(主要是引用解析)没有完成。