私は、リンカーには通常、元の名前ではなく、マングルされた名前が渡されると述べているC++の本を読んでいます。だから、私は壊れた名前がどのように見えるかを見ようとしています。したがって、Testというクラスを作成しました。このクラスには、関数のシグネチャが含まれているだけで、name_mangling.cppというファイルに保存されています。
次に、mainメソッドで、これらの関数を呼び出します。最初にファイルを.oにコンパイルしてから、次のようなコマンドでリンクしてみました
g++ -o name_mangling name_mangling.o
壊れた名前を見たいと思っていましたが、g++は次のような実際の名前を出力しました
undefined reference to `Test::Test(char const*)'
しかし一方で、.soなどの共有オブジェクトにリンクしようとすると、名前が壊れてしまうのを見てきました。上記の場合ではなく、.soの場合にg ++がマングルされた名前を出力するのはなぜですか?