概要
undefined reference to `operator new(unsigned)'
のエラーが大量に出てなんだと思ったら
-lstdc++
付けないと出るよとの事だったので、付けてコンパイルするも相変わらずコンパイルできず。
そもそもg++でコンパイルしてるんだからデフォルトで付けてgcc呼ばれてるのではと思いつつ試行錯誤したときの話
-m32オプションが悪さしてた
結局-m32オプションが悪さしていました。
CentOS5 x86_64にてopensslのライブラリを-m32オプションを付けずにビルド。
その後、そのopensslライブラリをリンクした別のプログラムを-m32オプションを付けてビルド。
そうすると
undefined reference to `operator new(unsigned)'
のエラーがopenssl側のライブラリで大量に出るといった具合です。
32bitと64bitで動作が変わる関数に関しては未定義と言われて当然かもしれないなとか思いつつ、
ぐぐった際に-lstdc++付けろ以外の回答がまるで見つからないので同じようにはまった人の為に書き残しておきます。
ちなみに解決策としてはopensslライブラリを-m32オプションでビルドするか、または-m32付けずに本体のアプリケーションビルドするかして、どっちかに統一すれば治ります。
new以外でエラーが出なかったのがちょっと気になります。それ以外にbit数が変わって動作が変わるような関数使ってないからですかね・・・