如何创建包含另一个静态库的静态库

0 c c++ gcc makefile qt-creator

我有一个名为 testlib.pro(使用 Qtcreator)的 C++ 项目,它将创建一个静态库 libtest.a。

该项目还包括 staticlib.a (示例)和 staticlib1.aie 使用其他静态库即时创建一个静态库。创建静态库后,我创建了 C 包装器(testApi.c)以使用使用静态库的 C++ 代码。我正在使用以下选项编译 testApi.c

gcc -o demo testApi.c -L ./testlib -ltest

但是它给出了链接器错误,统计它需要我用来链接 libtest.a 的静态库。所以我用下面的注释重新编译程序,它工作正常

gcc -o demo testApi.c -L ./testlib -ltest -lstatuclib -lstaticlib1

我的理解是,如果我将 libtest.a 运送到另一台机器并尝试编译 testApi.c 文件,则该机器可能需要 staticlib.a 和 staticlib1.a 。但我只想使用新创建的静态库 libtest.a。我错过了吗?

注意:我在 testlib.pro 中使用 -l 选项包含了 staticlib.a、staticlib1.a

小智 5

如果您的库使用其他静态库,则还需要在链接时提供它们。

有一个丑陋的方法(在 Linux 上)。您可以解压缩现有的静态库(或其中的几个)并将它们重新打包到一个新库中。因此,如果您觉得特别活泼,可以解压缩您依赖的那些库,然后将它们的内容与您自己的内容一起打包到一个新库中。丑陋,混乱,可能会导致各种其他问题,但如果这是您想要的方式......