0

Xcode 4.1 がインストールされた Macbook Pro (OS X Lion) のソース コードからオープン MPI (リリース 1.5.4) をコンパイルしようとしています。次のオプションを使用して openmpi を構成します。

../configure CFLAGS=-m64 CXXFLAGS=-m64 FFLAGS=-m64 FCFLAGS=-m64 --with-wrapper-cflags=-m64 --with-wrapper-cxxflags=-m64

new/clean ディレクトリにあります。試しmakeてみると、次のエラーが表示されます。

    Making all in otfprofile
  CXX    otfprofile-otfprofile.o
  CXX    otfprofile-CSVParse.o
  CXX    otfprofile-DataStructure.o
  CXX    otfprofile-Handler.o
  CXX    otfprofile-Prodtex.o
  CXX    otfprofile-Summary.o
  CXXLD  otfprofile
Undefined symbols for architecture x86_64:
  "___builtin_expect", referenced from:
      _main.omp_fn.0 in otfprofile-otfprofile.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[9]: *** [otfprofile] Error 1
make[8]: *** [all-recursive] Error 1
make[7]: *** [all-recursive] Error 1
make[6]: *** [all] Error 2
make[5]: *** [all-recursive] Error 1
make[4]: *** [all-recursive] Error 1
make[3]: *** [all] Error 2
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

gfortran MacPortsgcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)GNU Fortran (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) 使えば簡単にインストールできると聞きましたが、ソースから自分でコンパイルしたいと思っています。追加のフラグを設定する必要がある場合、またはこのエラーの原因を教えてください。さらに情報が必要な場合はお知らせください。ありがとう。

4

1 に答える 1

1

__builtin_expectgcc 拡張です。Apple からの clang/LLVM の動きはそれをサポートしていないと思いますが、それでも gcc だと思います。

OpenMPI には条件付きで設定されるマクロがありますが、ここではおそらく間違っています。これは分岐予測を示唆するための最適化にすぎないため、ビルド中にマクロを強制的に未定義にすることで__builtin_expectビルドを修正できる可能性があります。OMPI_CXX_HAVE_BUILTIN_EXPECT

于 2011-10-16T16:20:29.647 に答える