簡體   English   中英

使用未解析的符號鏈接靜態庫

[英]Linking against static library with unresolved symbols

我有一個靜態庫libA.a,其中包含未解析的符號(它們在另一個靜態庫libA_dep.a中也可用)

我創建了另一個與libA.a鏈接的共享庫libB.so

當用戶將程序鏈接到libB.so時,她還需要鏈接libA_dep.a,否則會有未解析的符號。 出於許可原因,我無法將libA_dep.a釋放給用戶。 有辦法解決此問題嗎? (例如,將libB.so與libA_dep.a鏈接,並告訴鏈接器將這些符號放入.so中)

您可以執行以下操作,但這將需要大量工作:

創建一個不包含任何內容的空.cpp進行編譯。 然后使用--whole-archive選項將其與靜態庫鏈接,以生成共享庫。 本質上,這會將靜態庫轉換為.so

最終將要做的是創建一個共享庫,其中包含您自己的代碼使用的靜態庫中的所有代碼。 然后,將主應用程序與共享庫而不是靜態庫鏈接。

您將必須提供與客戶相同的腳本,以便他們自己可以合法地獲取該靜態庫,並將其轉換為與您相同的共享庫,從而允許他們運行針對其構建的代碼共享庫版本。

暫無
暫無

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

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