[英]My c++filt doesn't seem to work properly, no output changes
在我的Linux上,我有一个.cpp文件,其中包含
void f(){}
struct C{void f(){}};
我编译了它,然后将二进制文件串起来,尝试对函数名称进行分解:
$c++filt __Z1gv
__Z1gv
$c++filt __ZN1C1fEv
__ZN1C1fEv
好吧,它似乎没有按我预期的那样工作。 我在这里弄错了吗? 我是否必须添加一些字母或删除一些字母才能使其正常工作?
注意这些名称是names符号,似乎c ++ filt仅适用于我的gcc版本吗? 还是c ++ filt应该有较新的版本来支持两个编译器?
您可能需要传递-_
标志。
$ c++filt -_ __Z1gv
g()
$ c++filt -_ __ZN1C1fEv
C::f()
-_
--strip-下划线在某些系统上,C和C ++编译器都在每个名称前面都使用下划线。 例如,C名称“
foo
”获得低级名称“_foo
”。 此选项删除初始下划线。 默认情况下,c++filt
是否删除下划线取决于目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.