我在Linux x86上创建了一个共享库。在创建它时,我已经静态链接了openssl。但是openssl仅在内部使用,然而我发现openssl符号已被导出。这会对其他需要我的库和openssl的库造成问题,因为在运行时可能会加载错误的符号。有没有办法在将openssl静态链接到我的共享库中时防止所有openssl符号被导出?
谢谢, Mike
谢谢, Mike
假设您正在使用gcc,在链接库时,请设置-fvisibility = hidden,并在库源代码中将所有要可见的函数标记为extern。只要openssl没有声明自己的函数extern,我认为这应该可以工作。
我认为如果openssl已经声明了一些符号extern,您可以使用编译指示强制隐藏符号。
还有其他选项可用。请查看gcc文档中的fvisibility部分,以获取有关可用选项的完整说明。