我有一个名为testlib.pro(使用Qtcreator)的C++项目,它将创建一个静态库libtest.a。
该项目还包括staticlib.a(示例)和staticlib1.a。即使用其他静态库,我创建一个静态库。创建静态库之后,我创建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中包含了staticlib.a,staticlib1.a using-l选项
如果您的库使用其他静态库,那么它们也需要在链接时提供。
有一个丑陋的方法围绕它(在Linux上)。您可以解包现有的静态库(或其中的几个),并将它们重新打包到一个新的库中。所以,如果你觉得自己特别活泼,你可以把你所依赖的那些库解包,然后把它们的内容和你自己的东西一起打包到一个新的库中。丑陋,令人困惑,可能会引起各种其他问题,但如果这是你想走的路。。。