2016-03-04 22 views
3

說我有一個應用程序,動態鏈接到firstlib.so firstlib.so鏈接到secondlib.so,我的應用程序也會看到secondlib.so的符號/功能?如果是,我該如何防止(我想避免人們混淆符號和功能)?間接鏈接庫的符號可見性

+0

命名空間的使用是否有幫助? –

回答

0

是的,您的應用程序將看到來自secondlib.so的符號。

除非您另有要求,否則每個庫中的每個符號都放在進程的全局符號表中。

您可能想要使用dlopenRTLD_LOCAL來防止這種情況,但要考慮到它可能會對代碼產生一些影響。

我在過去遇到過的一種這樣的效應是dynamic_cast在特定情況下可能不起作用。