我用了strip
MAC下的命令删除符号表。
然后我将使用 strings
进行检查和 grep
命令。
然后我发现即使是类私有(private)函数名也可以是grep
.
class ModuleBarn
{
public:
/***/
private:
void m_Link( FunctionSet* fs, const char* functionName );
Field* m_FindField( Function* fun, uint32_t argIdx );
Function* m_FindCall( const char* functionName, const char* moduleName );
}
alldeMac-mini:~ all$ strip libBootloader.so
alldeMac-mini:~ all$ strings libBootloader.so | grep m_Link
_ZN10ModuleBarn6m_LinkEPNS_11FunctionSetEPKc
如何剥离类中的公共(public)和私有(private)函数名称?
最佳答案
因为有.so
在你的输出中,我假设你在 Linux 上做所有这些?如果是,你需要做两件事。
-fvisibility=hidden -fvisibility-inlines-hidden
您很可能会丢失导出的符号,请在源代码中使用 __attribute__((visibility("default")))
单独标记它们.strip
操作系统附带的二进制文件。关于c++ - 我该如何剥离符号表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63790055/