1

システムを 10.8 から 10.9 にアップグレードし、それに応じて xcode を 5.0 から 5.0.1 にアップグレードしました。

複数の .a ファイルを単一のより大きな共有ライブラリに結合するビルドの一部を実行しようとすると、報われます。

Undefined symbols for architecture x86_64:
"__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13find_first_ofEPKcmm", referenced from:             
__ZN2bt3fst12FstLookupSet14loadFromStringERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEESA_ in libbtfst.a(bt_fst_factory.o)

フィルタリングされたその問題のシンボルは次のとおりです。

__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13find_first_ofEPKcmm
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find_first_of(char const*, unsigned long, unsigned long) const

リンク コマンド ラインは次のようになります。

libtool -macosx_version_min 10.6  -headerpad_max_install_names -dynamic -multiply_defined suppress -install_name `basename ../../../../rlp/lib/amd64-darwin12-xcode5/libbtutils.dylib` -o ../../../../rlp/lib/amd64-darwin12-xcode5/libbtutils.dylib -g   <long list of .a files>  -lstdc++.6 -lSystem
4

1 に答える 1

1

10.6 でサポートされていない新しい libc++ を使用してオブジェクトの一部をコンパイルしたようで、リンク中に使用しているライブラリと矛盾しています。

を使用してコンパイル中に使用するライブラリを指定できます。また、コンパイル中に-stdlib=libstdc++も指定する必要があります-mmacosx-version-min=10.6。これは同じ効果がある可能性がありますが、展開ターゲットを明示的に宣言します。

于 2013-10-23T19:22:12.033 に答える