2

i386 用にコンパイルされたアプリにリンクするために、boost 1.53 を取得しようとしています。これは64ビットのMac上にあります。ブーストはデフォルトで 64 ビットとしてビルドされているようです。そのため、リンクしようとすると、次のエラーが発生します。

ld: 警告: ファイル /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/local/lib/libboost_system.dylib を無視します。ファイルはサポートされていないファイル形式でビルドされましたリンクされているアーキテクチャではない (i386)

このコマンドでブーストを構築しようとしました:

./b2 toolset=darwin cxxflags="-arch i386" address-model=32 ステージ

しかし、違いはないようです。私のリンカー設定は

-lboost_system -lboost_thread

ブーストを別の方法で構築する必要がありますか、それとも別の方法でリンクする必要がありますか?

編集

このコマンドが正しくビルドされているように見えることがわかりました:

./b2 toolset=darwin cxxflags="-arch i386" address-model=32 アーキテクチャ=x86 ステージ

インストールについても同じことを行います

./b2 install toolset=darwin cxxflags="-arch i386" address-model=32 アーキテクチャ=x86 ステージ

4

1 に答える 1

3

ターゲット構成でアーキテクチャi386を選択する必要があります:(ターゲットValid ArchitecturesBuild Setting

ただし、アプリを構築している場合は、次の2つの解決策があります。

  • アプリを32ビットでビルドし、ライブラリの32ビットバージョンをビルドします。
  • アプリを64ビットでビルドします。そのためには、に置き換えi386x86_64変更ArchitecturesしますValid Architectures

ここに画像の説明を入力してください

于 2013-03-24T01:08:44.117 に答える