【发布时间】:2017-02-20 10:07:45
【问题描述】:
在我的 linux 上,我有一个 .cpp 文件
void f(){}
struct C{void f(){}};
我编译了它并将二进制文件串起来,尝试对函数名进行解构:
$c++filt __Z1gv
__Z1gv
$c++filt __ZN1C1fEv
__ZN1C1fEv
嗯,它似乎没有像我预期的那样工作。我这里有什么问题吗?我是否必须添加一些字母或删除一些字母才能使其工作?
请注意,这些名称是 clang 符号,似乎 c++filt 仅适用于我的 gcc 版本?或者 c++filt 应该有更新的版本来支持这两种编译器?
【问题讨论】:
-
你如何得到这些错位的名字?
-
使用
nm而不是strings。nm -C打印已解构的符号。
标签: c++ linux function compilation c++filt