[英]About shared library in Linux, is there a way to select export functions in a library?
我在这里阅读了该教程: http : //www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/
在我看来,在Windows平台中没有像DLL的dllexport
的功能。
有什么方法可以选择库中的某些函数作为导出函数,并使库中的其余函数对外部调用不可见?
您可能要使用GCC的可见性功能属性 。
请参阅GCC可见性Wikipage,并阅读Drepper的论文 如何编写共享库
有多种方法可以做到这一点。
使用Basiles答案中提到的可见性功能属性,或使用链接器版本脚本来完成这项工作。
在链接器脚本中,列出要导出的所有功能。 这是一个例子:
文件:MyLinkerScript.exp
{
global:
myExportedFunction1;
myExportedFunction2;
myExportedFunction3;
local: *;
};
在共享库的链接步骤中,您只需将以下额外参数传递给gcc:
-Wl,--version-script=MyLinkerScript.exp
之后,共享库中的所有符号将是私有的,但版本脚本的“全局”部分中列出的符号除外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.