我发现当我将可执行文件链接到静态库 (.a) 时,静态库中的符号最终由可执行文件导出。我想避免这种情况并且不导出任何内容。
我试过提供一个版本脚本,但似乎没什么区别。我的版本脚本内容如下:
{
global:
main;
local:
*;
};
有没有办法在静态库中链接时不从可执行文件中导出符号?我无法重新编译静态库本身。
最佳答案
默认情况下,可执行文件不导出符号,除非您使用 -Wl,--export-dynamic
,否则不会导出符号。仅当您动态加载本身需要链接到主可执行文件中的符号的库时才需要这样做(如果您的库包含覆盖 exe 中的虚拟方法的类,这在 C++ 中很常见)
也许您混淆了导出符号和调试符号。将生成调试符号以供调试器使用(如果您不剥离 exe),但不是运行所必需的。
关于linux - 避免从 Linux 上的可执行文件中导出符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375209/