J'utilise Mac OS X Sierra et j'ai constaté que clang (LLVM version 8.1.0 (clang-802.0.38)) ne prend pas en charge OpenMP: Lorsque j'exécute clang -fopenmp program_name.c
, le message d'erreur suivant s'affiche:
clang: error: unsupported option '-fopenmp'
Il semble que Clang ne supporte pas le drapeau -fopenmp
.
Je n'ai pas trouvé de bibliothèque openmp dans l'homebrew. Selon le site Web de LLVM, LLVM prend déjà en charge OpenMP. Mais je n'ai pas trouvé le moyen de l'activer pendant la compilation.
Cela signifie-t-il que le clang par défaut sur Mac ne prend pas en charge OpenMP? Pourriez-vous fournir des suggestions?
(Lorsque je passe à GCC pour compiler le même programme (gcc est installé à l'aide de brew install gcc --without-multilib
), la compilation est réussie.)
Essayez d’utiliser Homebrew 's llvm:
brew install llvm
Vous avez alors tous les fichiers binaires llvm dans /usr/local/opt/llvm/bin
. Pour compiler le programme OpenMP Hello World , par exemple, tapez
/usr/local/opt/llvm/bin/clang -fopenmp -L/usr/local/opt/llvm/lib omp_hello.c -o hello
Vous devrez peut-être également définir CPPFLAGS
avec -I/usr/local/opt/llvm/include
.
Un fichier makefile devrait ressembler à ceci:
CPP = /usr/local/opt/llvm/bin/clang
CPPFLAGS = -I/usr/local/opt/llvm/include -fopenmp
LDFLAGS = -L/usr/local/opt/llvm/lib
omp_hello: omp_hello.c
$(CPP) $(CPPFLAGS) $^ -o $@ $(LDFLAGS)
Mise à jour: Dans macOS 10.14 (Mojave), vous pourriez obtenir une erreur comme
/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/omp.h:118:13: fatal error: 'stdlib.h' file not found
Si cela se produit, les en-têtes macOS SDK sont absents de /usr/include
. Ils sont passés dans le SDK lui-même avec Xcode 10 . Installez les en-têtes dans /usr/include
avec
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
MacOS Mojave avec CMake
Installer LLVM avec openmp et libomp avec brew
brew update
brew install llvm libomp
ajouter les répertoires d'inclusion et de liens dans CMakeList.txt
include_directories("/usr/local/include" "/usr/local/opt/llvm/include")
link_directories("/usr/local/lib" "/usr/local/opt/llvm/lib")
lancez CMake avec les nouveaux compilateurs
cmake -DCMAKE_C_COMPILER="/usr/local/opt/llvm/bin/clang" -DCMAKE_CXX_COMPILER="/usr/local/opt/llvm/bin/clang++" ..
La version de clang est 7.0.1 au moment de l'écriture