我想創建一個使用第三方靜態庫中的函數的共享庫。例如,來自libfoobar.a
的foo
和bar
。我知道我的主要應用程序也使用foo
,並將導出該符號。所以我只想鏈接bar
以節省代碼大小並保留'foo'未解決(因爲它將由主應用程序提供)。如果我包含libfoobar.a
,鏈接器ld將在我的共享庫中包含這兩個函數。如果我不包含libfoobar.a
,我的程序庫將無法訪問函數bar
,因爲應用程序本身沒有在bar
中鏈接。問題:共享庫中庫函數的選擇性靜態鏈接
- 有沒有辦法告訴LD只能解決某些符號構建共享庫時?
- 將
libfoobar.a
轉成共享庫? - 包含函數
bar
的提取文件從libfoobar.a
並指定在鏈接器行? - 不用擔心,運行時加載程序將從您的應用程序中使用
bar
,因此共享庫中的bar
副本將不會被加載?
對不起libc的困惑。我只是指任何第三方靜態庫,並以libc爲例。我要修改我的問題來澄清這一點。 – KlaxSmashing 2009-12-07 19:30:09