如何将一个库静态链接到另一个静态库?

发布于 2025-01-06 12:22:22 字数 406 浏览 1 评论 0原文

我有 2 个具有不同版本 MinGW 的构建环境:一种为 Qt 配置,另一种则没有。然而,两者都有 Qt 的存根静态库(最终实际上链接到 dll)。问题是我想在Qt MinGW中构建一个静态库,然后将其包含在非Qt MinGW中。当我尝试时,我收到以下链接错误:

moc_browser.cpp:(.eh_frame+0x11): undefined reference to `___gxx_personality_v0'
browser.cpp:(.text+0x213): undefined reference to `__Unwind_Resume'

我发现 Qt MinGW 正在动态链接到标准库,并且我需要包含选项 -static-libgcc。但是,我不知道在哪里使用它,因为我不是构建可执行文件,而是构建静态库。

I have 2 build environments with different versions of MinGW: one configured for Qt and one not. Both, however, have the stub static libraries of Qt (which end up actually linking to the dlls). The problem is that I want to build a static library in the Qt MinGW and then include it in the non Qt MinGW. I get the following link errors when I try:

moc_browser.cpp:(.eh_frame+0x11): undefined reference to `___gxx_personality_v0'
browser.cpp:(.text+0x213): undefined reference to `__Unwind_Resume'

I found that the Qt MinGW is linking dynamically to the standard libraries and that i need to include the option -static-libgcc. However, I do not know where to use it since I am not building an executable, but rather a static library.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如果没有 2025-01-13 12:22:22

静态库只是目标文件的集合 - 存档。您不是通过链接来创建它,而是通过归档程序(通常是 ar)来创建它。要将另一个静态库的目标文件包含在新静态库中,您必须找到归档程序的相关选项来合并它们。

A static library is just a collection of object files - an archive. You don't create it by linking, but with an archiving program (often ar). To include the object files of another static library in a new one, you have to find the relevant options for the archiving program to merge them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文