1
我正在閱讀一本C++書,其中指出鏈接器通常會傳遞重疊名稱而不是原始名稱。所以,我正在試圖看看會出現什麼樣的重疊名稱。因此,我創建了一個名爲Test的類,它只包含函數簽名並將其保存到名爲name_mangling.cpp的文件中。打印C++名字mangling
然後在主方法中,我調用這些函數。我首先編譯該文件以.O然後試圖與命令如
g++ -o name_mangling name_mangling.o
我希望看到錯位的名稱鏈接,但克++印刷實際名稱如
undefined reference to `Test::Test(char const*)'
但在另當我嘗試鏈接到諸如.so這樣的共享對象時,我看到了一些手工編制的名稱。爲什麼g ++在.so的情況下打印損壞的名稱,而不是上述情況?
如果你只是想看看這些被破壞的名字,只要說'nm name_mangling.o',它應該在對象文件中列出符號。 – 2012-08-05 17:51:19
非常好,謝謝。 – Jimm 2012-08-05 17:54:53