簡體   English   中英

我的c ++ filt似乎無法正常工作,沒有輸出更改

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM