说我有一个动态链接到firstlib.so的应用程序,而firstlib.so链接到secondlib.so,我的应用程序是否也会看到secondlib.so的符号/函数?如果是,我该如何防止这种情况(我想避免人们混淆符号和功能)?
答案 0 :(得分:0)
是的,您的应用会看到来自secondlib.so
的符号。
除非您另有要求,否则每个库中的每个符号都会放在流程的全局符号表中。
您可能希望dlopen
与RTLD_LOCAL
一起使用以防止这种情况发生,但考虑到它可能会对代码产生一些影响。
我过去遇到的一个这样的影响是dynamic_cast
在特定情况下可能无效。