私は、g++
によってコンパイルされた私のプログラムにstrings
を実行すると、出力に使用するさまざまなクラスの名前が含まれていることがわかりました。g ++はコンパイルされたバイナリにクラス名を格納するのはなぜですか?
プログラムは-O3
でコンパイルされ、-g
または-p
はなく、バイナリを削除するとクラス名が表示されます。
g++
がこの情報をバイナリに格納する必要があるのはなぜですか?すべて存在するクラス名は、仮想関数を使用するクラスのように見えるので、これはそれと関係があります。
ポイント: 'g ++ -c blah.o blah.cpp'を使用すると、実行可能ファイルとしてリンクするまでクラス名が含まれません。 – mkb