我已经按照https://apt.llvm.org/中的说明安装了clang和llvm版本9。
接下来,我尝试从clang编译器获取我的openmp版本,所以我创建了文件 openmp_v.cpp :
#include <unordered_map>
#include <cstdio>
#include <omp.h>
int main(int argc,char *argv[])
{
std::unordered_map<unsigned,std::string> map{
{200505,"2.5"},{200805,"3.0"},{201107,"3.1"},{201307,"4.0"},{201511,"4.5"}};
printf("We have OpenmP %s.\n",map.at(_OPEnmP).c_str());
printf("Version: %d.\n",_OPEnmP);
return 0;
}
并进行编译:
clang++-9 -std=c++17 -fopenmp openmp_v.cpp -o openmp_v -fopenmp=libiomp5
结果是:
We have OpenmP 3.1.
Version: 201107.
问题在于openmp版本应为 4.5 而不是3.1,因为clang-9支持openmp 4.5。
我什至安装了libomp-9-dev,但没有任何改变。 另外,我在以下位置找到了llvm-9的include和lib文件:/ usr / lib / llvm-9 并尝试将它们添加为:
clang++-9 -std=c++17 -fopenmp openmp_v.cpp -o openmp_v -fopenmp=libiomp5 -I /usr/lib/llvm-9/include/openmp -L /usr/lib/llvm-9/lib/
但是它仍然不起作用。