[英]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.