linux - 避免从 Linux 上的可执行文件中导出符号

标签 linux gcc export symbols ld

我发现当我将可执行文件链接到静态库 (.a) 时,静态库中的符号最终由可执行文件导出。我想避免这种情况并且不导出任何内容。

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

{
    global:
        main;
    local:
        *;
};

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

最佳答案

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

也许您混淆了导出符号和调试符号。将生成调试符号以供调试器使用(如果您不剥离 exe),但不是运行所必需的。

关于linux - 避免从 Linux 上的可执行文件中导出符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375209/

相关文章:

gcc 4.4.7 : base class subobject padding occupied in derived class object 的 C++ 对象模型

php - 仅通过 FTP 访问导出 MySQL 数据库

c - read在socket编程中的用法

c - Linux内核中kzalloc_node中的内存节点是什么

c - 如何通过跳过标签之间的所有值来仅打印(C 代码)XML 标签?

javascript - Vue.js 组件不显示

javascript - 导入默认类不会让我使用它的功能

python - 如何使用 Uwsgi?我的 python 主路径在哪里?

linux - ARM 不会产生未对齐的异常

c++ - 如何使用代码块和 gcc 创建预编译头文件