2012-02-17 111 views
3

我有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。但是,我不知道在哪裏使用它,因爲我沒有構建一個可執行文件,而是一個靜態庫。

回答

3

靜態庫只是對象文件的集合 - 一個存檔。您不通過鏈接創建,而是使用歸檔程序(通常爲ar)。要將另一個靜態庫的目標文件包含到新文件中,必須找到存檔程序合併它們的相關選項。

+2

請參閱http://stackoverflow.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://stackoverflow.com/a/8170851/196561 – osgx 2012-02-18 17:12:22

相關問題