Estoy tratando de construir GraphChi en OS X Yosemite, pero obtengo el siguiente error:

fatal error: 'omp.h' file not found

De esta pregunta – Cómo incluir omp.h en OS X? – me enteré de que Yosemite utiliza Clang en lugar de gcc, el cual no incluye omp.h.

$ which gcc
/usr/bin/gcc
$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

Siguiente, he instalado gcc a través de Homebrew

$ brew info gcc
gcc: stable 4.9.2 (bottled)
http://gcc.gnu.org
/usr/local/Cellar/gcc/4.9.2_1 (1092 files, 177M)
Built from source with: --without-multilib

y actualizado $PATH para incluir la ruta de acceso a la nueva versión de gcc

$ echo $PATH
/usr/local/Cellar/gcc/4.9.2_1:usr/local/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

sin embargo, gcc -v y which gcc todavía apuntan a la versión antigua, y la construcción de GraphChi todavía no funciona debido a la falta de omp.h archivo

¿Alguien sabe qué más tengo que hacer?

Actualización

locate omp.h devuelto:

/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/lib/gcc/i686-apple-darwin11/4.2.1/include/omp.h
/usr/local/Cellar/gcc/4.9.2_1/lib/gcc/4.9/gcc/x86_64-apple-darwin14.1.0/4.9.2/include/omp.h
/usr/local/Cellar/gfortran/4.8.2/gfortran/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2/include/omp.h

mi ~/.profile:

export PATH=/usr/local/Cellar/gcc/4.9.2_1/lib/gcc/4.9/gcc/x86_64-apple-darwin14.1.0/4.9.2/include:/usr/local/Cellar/gcc/4.9.2_1/bin:usr/local/bin:/opt/local/bin:/opt/local/sbin:$PATH
  • Trate de locate "omp.h". Si no ha configurado locate, yo recomiendo hacerlo; se va a tomar un minuto o así, pero usted encontrará exactamente donde está, así que usted puede agregar que, a su ruta.
  • También, si gcc -v puntos todavía a la versión anterior, editar su ~/.bashrc y crear una nueva instancia de su terminal.
  • Yo ya reinstantiated mi terminal, es por eso que el camino ya está apuntando al directorio correcto
  • export PATH=/usr/local/Bodega/gcc/4.9.2_1/bin:$PATH
  • Traté de localizar omp.h y añadió que su ubicación $PATH, pero aún así no ayuda. Estoy editando la ruta de acceso en ~/.de perfil, es eso correcto o no hacer una diferencia en el lugar donde puedo hacer esto?
  • Post lo locate devuelto y lo que tiene en su ~/.perfil
  • ver la actualización de mi pregunta anterior

4 Comentarios

  1. 3

    Lo resuelto con la instalación de gcc con homebrew:

    brew install gcc --without-multilib

    y, a continuación, generar el código fuente con

    CC=gcc-5 CXX=g++-5 cmake ..
    CC=gcc-5 CXX=g++-5 make -j7
  2. 1

    Una vez instalado gcc-4.9 con homebrew, automáticamente será en su camino. El uso de OpenMP, usted sólo tiene que asegurarse de que está utilizando el recién instalado gcc-4.9, y será capaz de encontrar omp.h.

    En el caso de GraphChi, usted tendrá que ir a cambiar a la línea 3 de la Makefile para que sea gcc-4.9. A partir de allí, la ejecución debe hacer sólo el trabajo. Describe de esta en su README, pero al menos la versión en la que describe es de fecha https://github.com/GraphChi/graphchi-cpp#problems-compiling-on-mac.

  3. 0

    clang no admite OpenMP todavía. También gcc por defecto, los enlaces a Apple LLVM clang compilador (no el GCC instalado de cerveza).
    En lugar gcc-4.9 enlace a GCC. Creo que si -fopenmp se especifica omp.h se incluye automáticamente.

    Es posible crear manualmente una versión de sonar con OpenMP el apoyo, a ver http://clang-omp.github.io

  4. 0

    Usted no debe agregar la ruta a PATH; en su lugar, especificar como CFLAGS, incluyendo la -I opción. Usted puede export la CFLAGS variable, o en la marcha.

    Dependiendo de cómo compilar cosas, usted podría hacer

    CFLAGS=-I/usr/local/Cellar/gcc/4.9.2_1/lib/gcc/4.9/gcc/x86_64-apple-darwin14.1.0/4.9.2/include/omp.h gcc <whatever>

    De curso, en este caso se puede especificar directamente en el gcc de comandos (como -I/usr/local/....), pero la CFLAGS variable también funciona con configure (como configurar a menudo no tienen una opción para especificar el lugar donde se debe buscar específicos incluyen archivos); probablemente con make, o incluso para aquellos que la instalación de un paquete de Python: CFLAGS=-I... pip install <some-package>.

    Otros indicadores a considerar son

    • CXXFLAGS: C++ específicos pre-procesador de banderas
    • LDFLAGS: enlazador de indicadores específicos (por ejemplo, LDFLAGS=-L/some/path/... para la vinculación con la dinámica de las bibliotecas).
    • CC: especificar el compilador de C para el uso. Esta es una manera fácil de evitar la incorporada en el gcc alias para clang en OS X. Sólo uso CC=/usr/local/bin/gcc-4 make o similar.
    • CXX: especificar el compilador de C++ para usar.

Dejar respuesta

Please enter your comment!
Please enter your name here