Search code examples
c++gccg++openmp

How to include omp.h in OS X?


I'm new in C and have some problems compiling my code in OS X.

I code Java a lot both in Eclipse and use terminal to compile my code. However now I'm learning openMP and have troubles with it.

First I downloaded Xcode to write openMP code but it didn't recognize <omp.h>. Then I installed g++. When I type g++ -v into terminal I get this:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix

But when I use g++ Mesh.cpp -fopenmp I still get

Mesh.cpp:4:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.

Then I tried to install PTP into my Eclipse and got the same problem. I thought there was no omp.h in my MacBook so I searched for it and found several omp.h under folders under gcc-4.9.1/build/.

Here comes the problem. Based on the Java experience the only reason why I have the file but cannot use it is that the Class Path is wrong. However, I have no idea how to change this configuration in g++, or in Xcode, or in Eclipse. But since I can include files like <stdio.h> and compile it with all the IDEs, how can't I do the same with <omp.h>?

Another thing I noticed is that the gcc folder version is 4.9.1, but when I type gcc -v into terminal I get the same with typing in g++ -v

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix

Shouldn't the version information says something about 4.9.1? Just like what java -version shows

java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

Thanks for reading. Any help is appreciated.


Solution

  • This command can help you

    brew install libomp

    brew info libomp
    libomp: stable 6.0.1 (bottled)
    LLVM's OpenMP runtime library
    https://openmp.llvm.org/
    /usr/local/Cellar/libomp/6.0.1 (12 files, 1.2MB) *
      Poured from bottle on 2018-11-20 at 16:12:22
    From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/libomp.rb
    ==> Dependencies
    Build: cmake ✘
    ==> Requirements
    Required: macOS >= 10.10 ✔
    ==> Caveats
    On Apple Clang, you need to add several options to use OpenMP's front end
    instead of the standard driver option. This usually looks like
      -Xpreprocessor -fopenmp -lomp
    
    You might need to make sure the lib and include directories are discoverable
    if /usr/local is not searched:
    
      -L/usr/local/opt/libomp/lib -I/usr/local/opt/libomp/include
    
    For CMake, the following flags will cause the OpenMP::OpenMP_CXX target to
    be set up correctly:
      -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" -DOpenMP_CXX_LIB_NAMES="omp" -DOpenMP_omp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib