LoginSignup
1
1

More than 5 years have passed since last update.

-lstdc++を付けてもundefined reference to `operator new(unsigned)'のエラーが出る場合について

Posted at

概要

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数が変わって動作が変わるような関数使ってないからですかね・・・

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1