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

问题描述:

我有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。但是,我不知道在哪里使用它,因为我没有构建一个可执行文件,而是一个静态库。

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

+2

请参阅http://*.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one/9330267#9330267选项'ar' – osgx 2012-02-17 19:58:19

+0

良好的通话或去来源:http://sourceware.org/binutils/docs-2.22/binutils/ar-cmdline.html#ar-cmdline – eriktous 2012-02-17 20:02:49

+0

以及libtool:http://*.com/a/8170851/196561 – osgx 2012-02-18 17:12:22