読者です 読者をやめる 読者になる 読者になる

XCodeアップデート後の”symbol(s) not found”対処法

XCodeを6.0.1にアップデートしてから、C++開発環境のアチコチが調子悪い。

photo by sisssou

リンカが、下記のエラーを吐き出すようになった。

ld: symbol(s) not found for architecture x86_64

細かくログを見てみると、標準ライブラリのリンクがうまくいってないらしい。 こんなのとか。 ちなみにWEBフォント関係のプログラムを作ってます。

Undefined symbols for architecture x86_64:
  "std::basic_ios<char, std::char_traits<char> >::operator!() const", 
referenced from:
      Minimumoth::WoffParser::load(char const*) in WoffParser.o
  "std::istream::read(char*, long)", referenced from:
      Minimumoth::WoffParser::load(char const*) in WoffParser.o

どうやら、オレのMacだけ時代を先に行って128ビットになっているようだ。
と、アテをつけながらググっていると情報がチラホラ。
OSXが10.8から10.9になった段階で、デフォルトの標準ライブラリがlibstdc++からlibc++変わったことでこの事象が起きている情報がチラホラ。

OSXじゃないんだけどな・・・
と思いながら同じ対応をしてみたらナオッター。

g++のオプションに-stdlib=libstdc++を指定すればいいらしい。

Eclipseでは、ProjectのPropertiesメニューから、
1. [C++ Build]-[Settings]を選ぶ 2. Tools Settingsタブを選択 3. [MacOS X C++ Linker] または GCC C++ CompilerMiscellaneousを選択 4. Linker flags-stdlib=libstdc++ を追加

これでビルドすればイケルケル!

© 2009-2017 Osajiru All Rights Reserved.