【发布时间】:2021-02-26 21:59:39
【问题描述】:
我有一个名为 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 中使用 -l 选项包含了 staticlib.a、staticlib1.a
【问题讨论】:
-
请记住,静态库只不过是目标文件的存档。因此,可以从“其他”静态库中提取目标文件,并将它们添加到您自己的库中。并不是说我真的推荐它。
标签: c++ c gcc makefile qt-creator