簡體   English   中英

如何在Eclipse CDT中將靜態庫鏈接到靜態庫

[英]How to link static library into static library in Eclipse CDT

我有3個項目A,B和C. A是通用的,由B使用,最終使用C. B有點特別,到目前為止僅由C使用。

現在我希望盡可能多地重用A和B,我認為它們都是靜態庫。

所以我將A和B鏈接到靜態庫,將C鏈接到可執行文件,但是當我想鏈接C時,它給了我一些關於A函數的undefined reference錯誤。 所以我將庫A添加到鏈接器選項以解決此問題,但它沒有幫助。

所以我想:當我想部署B時,我也必須部署A才能鏈接。 有沒有辦法將靜態庫A鏈接到靜態庫B,所以我不必部署2個文件?

如果是這樣,我如何使用Eclipse CDT實現這一目標,因為我無法找到為歸檔程序定義其他目標的位置。

加成

我在linux下工作,但事情也應該在Windows下工作。 但主要是我需要一個linux的解決方案來繼續開發。

編輯

現在我通過將A和B鏈接到靜態庫然后使用剩余的* .o文件將它們鏈接到可執行文件來“解決”問題,但我不認為這很好。

更改您的鏈接順序。 C使用B,而B使用A. C不直接使用A,對嗎?

你寫:

gcc -o C -lA -lB

不起作用。 你寫

gcc -o C -lB -lA

有用。

如果是CDT,您可以轉到選項 - > C / C ++構建 - >設置 - > XXX C鏈接器 - >庫 ,並更改A和B的順序。

另一種方法:使用-u選項。

看到這個: http//gcc.gnu.org/onlinedocs/gcc/Link-Options.html但是,我從未成功過。 誰能告訴我如何使用-u選項?

靜態庫不能與另一個靜態庫鏈接。 我認為因為靜態庫不是可執行代碼,所以沒有完成完整的鏈接過程(主要是引用解析)。 它僅適用於動態庫和可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM