如何防止从静态链接库中导出符号?

时间:2010-04-07 20:46:10

标签: linux shared-libraries static-libraries static-linking

我在linux x86上创建了一个共享库。在创建它时,我在openssl中静态链接。 OpenSSL仅在内部使用,但我看到openssl符号已导出。这会导致需要我的库和openssl的其他库出现问题,因为可以在运行时加载错误的符号。当我将其静态链接到我的共享库时,有没有办法防止所有openssl符号被导出?

谢谢, 麦克

1 个答案:

答案 0 :(得分:0)

假设您正在使用gcc,在链接库时,设置-fvisibility = hidden并在库源中,将所有要显示的函数标记为extern。我认为只要openssl没有声明自己的函数extern,这应该工作。

我认为如果openssl声明了一些符号extern,你可以手动强制用pragma隐藏符号。

还有其他选择。查看fvisibility部分中的gcc文档,以获得对您可用内容的完整说明。