簡體   English   中英

共享庫中靜態庫中的靜態函數

[英]Static functions in a static lib in a shared object

我有一個使用共享庫( *.so )作為在運行時加載的插件的應用程序。 我還有一個靜態庫( *.a ),其中包含一些靜態函數,如果PluginA和PluginB都鏈接到該庫,它們也會得到自己的靜態函數副本嗎?

是的,兩個插件都將獲得它們自己的包含在靜態.a庫中的功能/符號副本。 要在共享庫或插件中使用,.a庫必須是與位置無關的代碼,可以在編譯和鏈接時使用選項-fPIC來實現。

您還必須確保使用選項RTLD_GLOBAL不會將PluginA和PluginB設置為dlopened(),因為PluginA和PluginB中包含的靜態庫的兩個副本之間可能存在名稱沖突。 如果要在編譯時動態鏈接PluginA和PluginB,則名稱沖突的問題在共享庫中更加明顯。

暫無
暫無

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

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