C++ GCC/Clang编译器如何决定符号类型?

C++ GCC/Clang编译器如何决定符号类型?,c++,static-linking,C++,Static Linking,我对二进制(已经剥离)显示泄露机密信息的符号有问题。当我看二进制时,所有关注的符号都是T、D或S类型之一 既然二进制文件是静态链接的(使用使用不同名称空间的外部静态lib),我不禁要问,为什么这些符号是全局的,为什么ld/strip没有将它们从符号表中删除 所以有两个相关的问题: 编译器/链接器如何决定哪些符号是全局的 有没有办法确保编译器/链接器不导出这些符号 “是否有办法确保编译器/链接器不导出这些符号?”-哪些符号?您能展示演示该问题的示例源代码吗?或者解释项目中的符号。@JohnZwi

我对二进制(已经剥离)显示泄露机密信息的符号有问题。当我看二进制时,所有关注的符号都是
T
D
S
类型之一

既然二进制文件是静态链接的(使用使用不同名称空间的外部静态lib),我不禁要问,为什么这些符号是全局的,为什么ld/strip没有将它们从符号表中删除

所以有两个相关的问题:

  • 编译器/链接器如何决定哪些符号是全局的
  • 有没有办法确保编译器/链接器不导出这些符号

“是否有办法确保编译器/链接器不导出这些符号?”-哪些符号?您能展示演示该问题的示例源代码吗?或者解释项目中的符号。@JohnZwinck我希望我知道如何在不发布专有静态libs等的情况下提供最少的示例。我想更重要的是文章中的第一个问题——编译器/链接器如何决定这些符号何时应该是全局的。我会修改以使它更清楚。你是说这个吗?在我的情况下@t.niese所有LIB都是静态的。我实际上没有创建lib。我使用供应商提供的LIB并链接它们。但不知何故,我的一些方法显示为导出(使用这些lib的方法)