16

Mac OS X Lion で GCC 4.5.1 をコンパイルしようとしています。

libiconv に問題があります。最初に、アーキテクチャ x86_64 の未定義シンボル (_iconv、_iconv_open、および _iconv_close) について不平を言いました。libiconv の MacPorts バージョンでは、これらの名前が _libiconv、_libiconv_open、および _libiconv_close に変更されていることがわかりました。そこで、/opt/local/lib の MacPorts ライブラリではなく、/usr/lib の Mac OS ネイティブ libiconv にリンクしました。

Undefined symbols for architecture x86_64:
"_iconv", referenced from:
  _convert_using_iconv in libcpp.a(charset.o)
  __nl_find_msg in libintl.a(dcigettext.o)
 (maybe you meant: __cpp_destroy_iconv, _cpp_init_iconv )
"_iconv_close", referenced from:
  __cpp_destroy_iconv in libcpp.a(charset.o)
  __cpp_convert_input in libcpp.a(charset.o)
  __nl_free_domain_conv in libintl.a(loadmsgcat.o)
"_iconv_open", referenced from:
  _init_iconv_desc in libcpp.a(charset.o)
  __nl_init_domain_conv in libintl.a(loadmsgcat.o)

しかし、それを行った後、最初から再構築しようとしましたが(クリーニングとすべて)、別の時点で未定義のシンボルについて不平を言いましたが、今回は_libiconv、_libiconv_open、および_libiconv_close。

Undefined symbols for architecture x86_64:
  "_libiconv", referenced from:
    _identifier_to_locale in libbackend.a(pretty-print.o)
  "_libiconv_close", referenced from:
    _identifier_to_locale in libbackend.a(pretty-print.o)
  "_libiconv_open", referenced from:
    _identifier_to_locale in libbackend.a(pretty-print.o)

これに対処する方法について何か考えはありますか? MacPorts から libiconv をアンインストールする解決策をいくつか見つけましたが、それに依存する多くのポートがあるため、実行したくありません。

4

5 に答える 5

2

make clean実際にlibbackend.aはビルド ディレクトリから削除されていないようです。MacPorts に対してコンパイルされた古いバージョンのコードにまだリンクしようとしていたのです。手動で実行するrm libbackend.a(またはmake distcleanmake spotlessまたはすべてを完全にクリーンアップすることになっているもの) ことで、おそらく問題が解決したのではないでしょうか?

于 2013-10-01T19:36:21.167 に答える