我正在尝试在 Mac 上编译此源代码 (https://sites.google.com/site/bgcsoftware/)。我使用自制软件安装了 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.
答案 0 :(得分:1)
看起来 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 相关的标志,具体取决于您的编译器/操作系统。
答案 1 :(得分:0)
添加 -fopenmp 没有帮助。但是,当我安装时,原始代码确实运行了:
brew install --build-from-source libomp