2015-10-28 16 views
6

linux mintを実行しているラップトップでclang(3.7.0)を使用してOpenMPプロジェクトを設定しようとしています。clangを使用してコンパイルすると 'omp.h'ファイルが見つかりません

私は今すぐOpenMPがサポートされていないと読んだので、このチュートリアルhttps://clang-omp.github.io/に従って、openMPをclangに統合しました。

私は環境変数を設定し、プロジェクトに-fopenmpフラグを設定しましたが、ビルド時には「致命的なエラー: 'omp.h'ファイルが見つかりません」というエラーが表示されます。

私は環境変数を間違って設定していると思います。私はそれらを適切な場所に置いているかどうかを確認する方法はありますか?私はちょうどそれらを.bashrcファイルにコピーしました。

編集: 私は$ omp.h見つけ実行したときに私が取得:ここ

/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 

は私のメイクです:

# 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) [email protected] $(LFLAGS) $(OBJECTS) 
    @echo "Linking complete!" 

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp 
    @$(CXX) $(CFLAGS) -c $< -o [email protected] 
    @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) 

答えて

2

'omp.hは' 来る交流ヘッダーです"Mint" libgcc- [version] -devを指定してください。 (RPMベースのOSのは、異なるパッケージでこのヘッダーを持って、例えばlibgomp- *)

例のlibgcc-4.8-devの:/usr/lib/gcc/x86_64-linux-gnu/4.8/include/omp.h

解決策:デフォルトのgccのバージョンをインストールします。$ gcc --version


+0

をそれは「のlibgcc-4.8-devのは、すでに最新バージョンです。」と述べています – LxSwiss

+0

OpenMPはClangとGCCの最近のバージョンでサポートされています。 – coincoin

+1

提案:CFLAGS = -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include –

3

のOpenMPがうまくクラン3.7でサポートされていますが、それはhereを参照してください有効にする必要があります。

OpenMP 3.1 is fully supported, but disabled by default. To enable it, please use the -fopenmp=libomp command line option.

また、より精度のためStatus of supported OpenMP constructsを参照してください。

これで、clang-ompプロジェクトをもうクローンする必要はありません。

プロジェクトにはどのようなビルドシステムを使用しますか、コンパイル時にどのようなエラーが発生しますか?

メイクファイル-fopenmpフラグを追加することを忘れないでください。

CMakeを使用している場合は、適切なOpenMPフラグもFindOpenMP moduleで探してそれに応じて追加する必要があります。

まだインクルードエラーが発生した場合は、omp.hヘッダーファイルがデフォルトの検索パスにない可能性があります。したがって、gccに付属のものを含めて、-I/usr/lib/gcc/x86_64-linux-gnu/4.8/include/を追加するようにしてください。

だからあなたの場合には、あなたがこの行を追加する必要があります

CFLAGS = -std=c+11 [etc...] 
CFLAGS += -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include/ 
LINKER = [etc...] 
+0

私はMakefileでビルドを動作すると思う。私が得る唯一のエラーは "src/main.cpp:6:10:致命的なエラー: 'omp.h'ファイルが見つかりません #include "です。また、-fopenmp = libompコマンドラインオプションはどこに置く必要がありますか?私は理解していません – LxSwiss

+0

あなたのMakefileを提供してくださいいくつか含まれて見逃されているようにもあなたのパスが正しいことを確認してください。私は答えを加えます。 – coincoin

関連する問題