4

Boostの静的Universal Binary libが欲しいです。(最新の安定バージョン、つまり 1.43.0 以降が望ましいです。)

同様の問題と考えられる解決策に関する多くの Google ヒットを見つけました。ただし、それらのほとんどは時代遅れのようです。また、それらのどれも実際に機能しませんでした。

ただいま、がんばってます

sudo ./bjam --toolset=darwin --link=static --threading=multi \
--architecture=combined --address-model=32_64 \
--macosx-version=10.4 --macosx-version-min=10.4 \
install

それはうまくコンパイルされ、インストールされます。ただし、生成されたバイナリは壊れているようです。

az@ip245 47 (openlierox) %file /usr/local/lib/libboost_signals.a
/usr/local/lib/libboost_signals.a: current ar archive random library

az@ip245 49 (openlierox) %lipo -info  /usr/local/lib/libboost_signals.a
input file /usr/local/lib/libboost_signals.a is not a fat file
Non-fat file: /usr/local/lib/libboost_signals.a is architecture: x86_64

編集:コマンドが間違っていたようで、ほとんどのオプションで「--」を削除する必要があります。だから私が今しようとしているコマンド(-aはすべてを再構築することを意味します):

sudo ./bjam -a toolset=darwin link=static threading=multi \
architecture=combined address-model=32_64 \
macosx-version=10.4 macosx-version-min=10.4 \
install

ただし、これにより、次のような多くの奇妙なエラーが発生します(以前に発生したもの)。

darwin.compile.c++.pch bin.v2/libs/math/build/darwin-4.2.1/release/address-model-32_64/architecture-combined/link-static/macosx-version-min-10.4/macosx-version-10.4/threading-multi/../src/tr1/pch.hpp.gch
In file included from ./boost/math/special_functions/acosh.hpp:18,
                 from ./boost/math/special_functions.hpp:15,
                 from libs/math/build/../src/tr1/pch.hpp:9:
./boost/config/no_tr1/cmath.hpp:21:19: error: cmath: No such file or directory

これは、Universal バイナリをビルドするときに発生する別の問題である可能性があります: MacOSX 上の g++ は -arch ppc64 では機能しません

4

3 に答える 3

2

ここでは、10.4 用にコンパイルされた Boost を使用しています。Apple の GCC 4.2 は MacOS 10.4 SDK でサポートされていないため、GCC 4.0 を使用します。これを実現するには、bjam ユーザー設定ファイルが必要です。user-config-darwin.jam. 弊社の内容はこちらです。思いのままに変更してください:

# Boost.Build Configuration

    # Compiler configuration
using darwin : 8.11 : /usr/bin/g++-4.0 : 
    <architecture>"combined"
    <address-model>"32" # this can be changed to 32_64 for 32/64 universal builds
    <macosx-version>"10.4"
    <macosx-version-min>"10.4"
#   <root>"/Developer"
    <compileflags>""
    <linkflags>"" ; 

次に、コンパイル時にユーザー構成の jam ファイルを使用するように bjam に指示する必要があります。

bjam --user-config=user-config-darwin.jam ... (your other options go here) ...

これで、システム SDK ディレクトリのシンボリック リンクをいじる必要がなくなりました。

于 2010-05-14T00:16:49.497 に答える
2

問題が見つかりました。MacOSX 10.4 SDK には、GCC 4.2 のシンボリック リンクがいくつか欠けているようです。

これをテストケースとして使用してください: MacOSX 上の g++ は -arch ppc64 では動作しません

GCC 4.2 で複数のエラーが報告されます (C++ インクルードの欠落、C インクルードの欠落、ライブラリの欠落)。いずれの場合も、シンボリックリンクを設定するだけで修正できます。SDK でファイルを検索し、MacOSX 10.5 SDK と同じ方法でシンボリック リンクを設定します。

その後、すべてうまくいきました。

于 2010-05-13T23:57:58.277 に答える
1

OSX 10.6 で 4 ウェイ ユニバーサル ブースト スタティック バイナリをビルドするには、次のようにします。

  1. ブースト Web サイトからブーストをダウンロードします。

  2. アーカイブと cd を boost_1_xx_0 フォルダーに展開します (xx は使用しているブーストのバージョンです)。

  3. 走る:

    ./bootstrap.shその後

    ./bjam macosx-version=10.6 macosx-version-min=10.4 architecture=combined threading=multi link=static address-model=32_64

これにより、Boost.MPI ( --with-mpi オプションが必要) を除くすべてがコンパイルされます。ビルド製品が配置されます./stage

于 2011-02-04T03:48:23.380 に答える