我正在寫一個需要處理XML的靜態庫。我希望它包含所有必需的東西,但我不知道如何使其他靜態庫鏈接到它,即libxml2。鏈接靜態庫與其他靜態庫
我將-c
標誌傳遞給gcc生成.o
ar
然後用於創建lib。我必須通過什麼魔標組合來讓我的靜態庫吞下libxml2?
我正在寫一個需要處理XML的靜態庫。我希望它包含所有必需的東西,但我不知道如何使其他靜態庫鏈接到它,即libxml2。鏈接靜態庫與其他靜態庫
我將-c
標誌傳遞給gcc生成.o
ar
然後用於創建lib。我必須通過什麼魔標組合來讓我的靜態庫吞下libxml2?
圖書館不只是吞下其他圖書館。有兩種解決方案可以做你想做的事。
可悲的是,什麼是最爲有效的,我是從靜態庫提取所有.o
秒,然後包括他們與你的.o
s到做一個.a
所以,你可以看到的內容libxml2.a
與ar t libxml2.a
比方說,爲了簡單起見,它僅包含:xml2a.o
和xml2b.o
你想與你的mine.o
這些結合起來,使mine.a
你需要首先做ar x libxml2.a
走出xml2a.o
和xml2b.o
然後做ar cr mine.a mine.o xml2a.o xml2b.o
使用最廣泛的ar
命令A simple explanation,雖然我可能已經總結你會從它那裏得到這裏。
這裏得出同樣的結論。 – ruipacheco
@Cocoaster如果你想出更好的東西讓我知道。導致這個解決方案的工作,但男人是醜陋的,特別是在我的情況下,我必須鏈接5'.a's –
不適用於我:http://stackoverflow.com/questions/20662999/static-lib- ranlib -cant-find-symbols – ruipacheco
對象手動合併成一個新的靜態庫實例:
ar -x libx.a
ar -x liby.a
ar -c libz.a *.o
[是否此相關的問題和答案(http://stackoverflow.com/q/13128/2065121)幫助呢? –
@RogerRowland - 它的確如此。你可以讓它成爲答案,我可以接受它嗎? – ruipacheco
好吧,這已經是別人的回答了 - 只是在關聯的問題中提出了一個答案,我所做的只是搜索。 –