'omp.h " fichier non trouvé lors de la compilation à l'aide de clang
Je suis en train de configurer un OpenMP projet à l'aide de clang( 3.7.0) sur mon ordinateur portable sous linux mint.
Maintenant, j'ai lu que OpenMP n'est pas pris en charge tout de suite, donc j'ai suivi ce tutoriel https://clang-omp.github.io/ à intégrer openMP dans clang.
J'ai cloné le code source, définissez les variables d'environnement et de définir le -fopenmp drapeau à mon projet, mais j'ai toujours le message d'erreur "fatal error: 'omp.h "fichier non trouvé" lors de la construction.
Ma conjecture est que j'ai de définir les variables d'environnement de mal. Est-il possible de vérifier si j'ai mis au bon endroit? J'ai juste copié dans le .bashrc fichier.
Edit:
lorsque j'exécute $recherchez omp.h-je obtenir:
/usr/include/re_comp.h
/usr/include/linux/ppp-comp.h
/usr/include/linux/seccomp.h
/usr/include/net/ppp-comp.h
/usr/include/openssl/comp.h
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/omp.h
/usr/lib/perl/5.18.2/CORE/regcomp.h
/usr/src/linux-headers-3.13.0-24/arch/arm/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/microblaze/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/mips/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/powerpc/include/uapi/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/s390/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/sh/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/sparc/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/arch/x86/include/asm/seccomp.h
/usr/src/linux-headers-3.13.0-24/include/linux/ppp-comp.h
/usr/src/linux-headers-3.13.0-24/include/linux/seccomp.h
/usr/src/linux-headers-3.13.0-24/include/net/ipcomp.h
/usr/src/linux-headers-3.13.0-24/include/uapi/linux/ppp-comp.h
/usr/src/linux-headers-3.13.0-24/include/uapi/linux/seccomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/seccomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/crypto/pcomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/inet/ipcomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/inet6/ipcomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/isdn/ppp/bsdcomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/ppp/bsdcomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/config/xfrm/ipcomp.h
/usr/src/linux-headers-3.13.0-24-generic/include/linux/ppp-comp.h
/usr/src/linux-headers-3.13.0-24-generic/include/linux/seccomp.h
voici mon makefile:
# Requires the following project directory structure:
# /bin
# /obj
# /src
# Use 'make remove' to clean up the whole project
# Name of target file
TARGET = main
CXX = clang++
CFLAGS = -std=c++11 \
-Weverything -Wall -Wextra -Wold-style-cast -Wpointer-arith -Wcast-qual \
-Wno-missing-braces -Wempty-body -Wno-error=uninitialized \
-Wno-error=deprecated-declarations -Wno-c++98-compat \
-pedantic-errors -pedantic \
-Os -fopenmp
LINKER = clang++ -o
LFLAGS = -Wall -Weverything -pedantic
SRCDIR = src
OBJDIR = obj
BINDIR = bin
SOURCES := $(wildcard $(SRCDIR)/*.cpp)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)
RM = rm -f
$(BINDIR)/$(TARGET): $(OBJECTS)
@$(LINKER) $@ $(LFLAGS) $(OBJECTS)
@echo "Linking complete!"
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
@$(CXX) $(CFLAGS) -c $< -o $@
@echo "Compiled "$<" successfully!"
.PHONEY: prepare
prepare:
mkdir -p bin
mkdir -p obj
.PHONEY: clean
clean:
@$(RM) $(OBJECTS)
@echo "Cleanup complete!"
@$(RM) tmp_file-*
@echo "Temporary files removed!"
.PHONEY: remove
remove: clean
@$(RM) $(BINDIR)/$(TARGET)
@echo "Executable removed!"
.PHONEY: run
run:
./bin/$(TARGET)
Vous devez vous connecter pour publier un commentaire.
OpenMP est bien pris en charge dans Clang 3.7 mais vous pourriez avoir besoin pour lui permettre de voir ici.
Voir aussi Le statut de prises en charge OpenMP constructions pour plus de précisions.
De sorte que vous n'avez pas à cloner le clang-omp projet plus.
Ce système de construction faites-vous utiliser pour votre projet et quelles erreurs que vous obtenez lorsque vous compilez ?
Si vous utilisez Makefile : ne pas oublier d'ajouter la
-fopenmp
drapeau.Si vous utilisez CMake : vous devriez aussi regarder à droite OpenMP drapeaux avec FindOpenMP module et ajoutez-les en conséquence.
Si vous obtenez toujours l'inclure erreur alors votre omp.h fichier d'en-tête ne peut pas être dans le cliquetis chemin de recherche par défaut. Ainsi, vous devriez essayer d'inclure celui qui vient avec gcc et ajouter
-I/usr/lib/gcc/x86_64-linux-gnu/4.8/include/
.Si dans votre cas, vous devez ajouter cette ligne :
'omp.h' est un en-tête c qui vient avec la "monnaie" libgcc-[version]-dev . (TR /min système d'exploitation basé sur de l'avoir cet en-tête dans un paquet différent, par exemple libgomp-*)
Exemple libgcc-4.8-dev : /usr/lib/gcc/x86_64-linux-gnu/4.8/include/omp.h
Solution : Installer la version par défaut de gcc :
$ gcc --version
libgcc-dev