2015-10-19 208 views
0

也許這是一個愚蠢的問題,但到目前爲止我無法找到它的直接答案。可以在兩個共享對象(.so)之間共享變量嗎? 例如:在一個庫中定義全局變量並在另一個庫中將其聲明爲extern。我的答案是 - 「不」,但我無法解釋爲什麼。在兩個共享對象之間共享變量

+0

爲什麼不呢?從標準C庫考慮舊的'errno'實現。你不應該這樣做(因爲它仍然是一個全局變量),但你可以。 – Hcorg

+1

是的,你可以。問題是任何鏈接到庫的可執行文件都被強制鏈接到另一個,這會創建一個依賴關係(緊密耦合) – Nandu

回答

0

是的,當然。

如果無法使用共享庫中定義的符號,則它們將沒有用處。

如果您指的是另一個共享庫中的符號,那麼您的最終可執行文件必須[動態]鏈接到兩者。