间接链接库的符号可见性

时间:2016-03-04 14:54:59

标签: c++ linux

说我有一个动态链接到firstlib.so的应用程序,而firstlib.so链接到secondlib.so,我的应用程序是否也会看到secondlib.so的符号/函数?如果是,我该如何防止这种情况(我想避免人们混淆符号和功能)?

1 个答案:

答案 0 :(得分:0)

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

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

您可能希望dlopenRTLD_LOCAL一起使用以防止这种情况发生,但考虑到它可能会对代码产生一些影响。

我过去遇到的一个这样的影响是dynamic_cast在特定情况下可能无效。