簡體   English   中英

C ++ -fvisibility = hidden -fvisibility-inlines-hidden

[英]C++ -fvisibility=hidden -fvisibility-inlines-hidden

我有一個關於C ++可見性屬性的問題。 我已經閱讀了http://gcc.gnu.org/wiki/Visibility ,但我不太明白它是如何工作的。

我希望在我的一些共享庫中隱藏可見性。 我相信這意味着符號被隱藏了嗎?

你打算如何鏈接共享庫呢? 有特殊的方式嗎? 如果我鏈接它通常如何鏈接它不起作用。

有人能幫助我嗎。

-fvisibility=hidden使所有符號默認隱藏。

接下來要做的是選擇哪些函數對於鏈接到庫的用戶是可見的,並通過用可見屬性標記它們使它們可見。

例如

void __attribute__((visibility("default"))) Exported()
{
    // ...
}

它減少了保留共享對象專用的不必要的符號信息。

考慮具有超過10,000個符號(函數/全局變量)的共享對象,但其中只有100個是可從庫用戶訪問的公共函數。 我們可以使其他100個功能對其他人可見,剩余9,900個符號為私有。

它也會減少共享對象的大小,因為它的重定位表只有100個信息符號。 使用此標志和-ffunction-sections -fdata-sections將通過具有與這100個符號相關的定義來進一步減小共享對象的大小。

暫無
暫無

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

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