7

我发现当我将可执行文件链接到静态库 (.a) 时,静态库中的符号最终会被可执行文件导出。我想避免这种情况并且什么也不出口。

我试过提供版本脚本,但似乎没有什么区别。我的版本脚本内容如下:

{
    global:
        main;
    local:
        *;
};

在静态库中链接时,有没有办法不从可执行文件中导出符号?我无法重新编译静态库本身。

4

2 回答 2

10

默认情况下,可执行文件不导出符号,除非您使用 -Wl,--export-dynamic,否则不会这样做。仅当您动态加载本身需要链接到主可执行文件中的符号的库时才需要这样做(如果您的库包含覆盖 exe 中的虚拟方法的类,这在 C++ 中很常见)

也许您将导出符号与调试符号混淆了。为了调试器的利益,将生成调试符号(如果您不剥离 exe),但不需要运行。

于 2010-03-03T22:35:33.057 回答
3

使用strip

$男人带

于 2010-03-03T22:04:53.370 回答