我在linux x86上创建了一个共享库。在创建它时,我在openssl中静态链接。 OpenSSL仅在内部使用,但我看到openssl符号已导出。这会导致需要我的库和openssl的其他库出现问题,因为可以在运行时加载错误的符号。当我将其静态链接到我的共享库时,有没有办法防止所有openssl符号被导出?
谢谢, 麦克
答案 0 :(得分:0)
假设您正在使用gcc,在链接库时,设置-fvisibility = hidden并在库源中,将所有要显示的函数标记为extern。我认为只要openssl没有声明自己的函数extern,这应该工作。
我认为如果openssl声明了一些符号extern,你可以手动强制用pragma隐藏符号。
还有其他选择。查看fvisibility部分中的gcc文档,以获得对您可用内容的完整说明。