2016-03-04 21 views
3

说我有一个应用程序,动态链接到firstlib.so firstlib.so链接到secondlib.so,我的应用程序也会看到secondlib.so的符号/功能?如果是,我该如何防止(我想避免人们混淆符号和功能)?间接链接库的符号可见性

+0

命名空间的使用是否有帮助? –

回答

0

是的,您的应用程序将看到来自secondlib.so的符号。

除非您另有要求,否则每个库中的每个符号都放在进程的全局符号表中。

您可能想要使用dlopenRTLD_LOCAL来防止这种情况,但要考虑到它可能会对代码产生一些影响。

我在过去遇到过的一种这样的效应是dynamic_cast在特定情况下可能不起作用。