编译源代码时找不到 omp.h' 文件



我正在尝试在mac上编译这个源代码(https://sites.google.com/site/bgcsoftware/)。我使用homebrew安装了hdf5和gsl。

你知道可能是什么问题吗?

提前感谢!

h5c++ -Wall -O2 -o bgc bgc_main.C bgc_func_readdata.C bgc_func_initialize.C bgc_func_mcmc.C bgc_func_write.C bgc_func_linkage.C bgc_func_ngs.C bgc_func_hdf5.C mvrandist.c -lgsl -lm
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
bgc_main.C:17:10: fatal error: 'omp.h' file not found
#include <omp.h>
^~~~~~~
1 error generated.
bgc_func_mcmc.C:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
^~~~~~~
1 error generated.

看起来clang是实际使用的编译器。当使用clang编译OpenMP时,您需要传递-fopenmp标志。

尝试像这样添加-fopenmp标志:

h5c++ -fopenmp -Wall -O2 -o bgc 
bgc_main.C bgc_func_readdata.C bgc_func_initialize.C 
bgc_func_mcmc.C bgc_func_write.C bgc_func_linkage.C 
bgc_func_ngs.C bgc_func_hdf5.C mvrandist.c -lgsl -lm

-fopenmp标志告诉编译器将标记为#pragma omp ...的代码替换为生成的并行代码,并在后台自动添加正确的-I包含标志。

您应该能够运行

h5c++ --help | grep openmp

查看其他openmp相关标志,具体取决于编译器/操作系统。

添加-fopenmp没有帮助。但是,当我安装时,原始代码确实运行:brew install --build-from-source libomp

最新更新