私のgccはうまくコンパイルされますが、clangは次のメッセージで失敗します:
clang -fopenmp=libomp -o main main.c
main.c:5:10: fatal error: 'omp.h' file not found
私もlibomp5
パッケージをインストールし、フラグを-fopenmp=libomp5
に変更しましたが、どちらも助けにはなりませんでした:
clang -fopenmp=libomp5 -o main main.c
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
これら 推奨事項は機能しませんでした。
必要な16.04特定のパッケージをインストールし、対応するフラグを渡すためのヒントに感謝します。
同じ問題がありました。
Sudo apt install libomp-dev
Ubuntu 16.10で修正
//test.c
#include "omp.h"
#include <stdio.h>
int main(void) {
#pragma omp parallel
printf("thread %d\n", omp_get_thread_num());
}
それから
clang test.c -fopenmp
./a.out
thread 0
thread 5
thread 2
thread 1
thread 7
thread 3
thread 4
thread 6
また
clant-3.9 test.c -fopenmp
動作します。
GCCとClangは、異なるOpenMPランタイムライブラリを使用します:libgompとlibompを尊重します。
Clangのランタイムは、 LLVM OpenMP ランタイムであり、Intel OpenMPランタイム(オープンソース)に基づいています。 https://www.openmprtl.org/
システムにGCCがomp.h
をインストールしました
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h
およびlibomp-dev
insalled omp.h
at
/usr/include/omp.h
これらは、異なる関数定義を含む異なるヘッダーファイルです。たとえば、どちらのヘッダーファイルを使用してもかまいません。 omp_get_wtime()
しかし、一般的には、リンク先のランタイムに対応するヘッダーファイルを使用する方が良いと思います。
omp.hファイルがシステムに存在しないようですPATH。最初にomp.hファイルがどこにあるかわからない場合は、それを見つけようとします。
find / -name 'omp.h' -type f
次に、このコマンドを実行してコードをコンパイルします。
clang -o main main.c -I/path/to/omp/folder