Открытая ошибка компиляции MPI - PullRequest
0 голосов
/ 16 октября 2011

Я пытаюсь скомпилировать открытый MPI (выпуск 1.5.4) из исходного кода на Macbook Pro (OS X Lion) с установленным Xcode 4.1.Я настраиваю openmpi со следующими параметрами:

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

в новом / чистом каталоге.Когда я пытаюсь 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

У меня есть gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00), gfortran GNU Fortran (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) Я слышал, что могу использовать MacPorts для простой установки, но я хочу скомпилировать его самиз источника.Может кто-нибудь подсказать мне, нужно ли мне установить дополнительные флажки или что вызывает эту ошибку?Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.Благодаря.

1 Ответ

1 голос
/ 16 октября 2011

__builtin_expect является расширением gcc.Я предполагаю, что шаг clang / LLVM от Apple не поддерживает это, но думает, что он все еще gcc.

В OpenMPI есть макрос, который установлен условно, но, скорее всего, здесь неправильно.Поскольку __builtin_expect - это всего лишь оптимизация для подсказки о прогнозировании ветвлений, вы, вероятно, можете исправить сборку, заставив макрос OMPI_CXX_HAVE_BUILTIN_EXPECT быть неопределенным во время сборки.

...