簡體   English   中英

通過靜態庫進行條件鏈接

[英]Conditional linking through static library

我正在用C ++寫一個大的靜態庫。 在該庫中,我使用了大量靜態和動態庫中的符號。 當我“制作”它時,我不需要鏈接任何庫,因為它是靜態的。 這是我的問題:我的靜態庫非常通用。 它為同一接口提供了幾種實現(您可以看到諸如驅動程序之類的實現; libA提供其自己的實現,而libB提供其實現等等)。 這些實現不打算一起使用 ,因為其中一些依賴於平台。

鏈接到我的庫時出現問題。 客戶端必須鏈接到我的lib使用的所有符號庫,即使客戶端的代碼不依賴於任何lib符號。 例如,如果客戶的代碼僅取決於libA ,則他仍必須鏈接到libB,因為我的靜態庫中有來自libB的一些符號。

您是否知道一種防止這種行為的方法,僅鏈接到實際使用的庫,從而在客戶端代碼中推斷出符號?

謝謝。

您可能會動態地將您的庫與其他庫鏈接。 嘗試鏈接這些論文的靜態版本。

如果我理解正確,則您的庫正在嘗試使用應由客戶代碼defined的符號。 如果客戶端的代碼中沒有certain symbols ,您希望鏈接器not link庫的某些部分。對嗎?

如果以上符合您的要求,請考慮http://en.wikipedia.org/wiki/Weak_symbol 我不確定您使用的是哪個工具鏈,但是如果受支持的弱符號是實現條件鏈接的一種好方法。

暫無
暫無

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

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