1

我正在尝试在 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.
4

2 回答 2

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 相关的标志,具体取决于您的编译器/操作系统。

于 2021-01-31T20:24:25.937 回答
0

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

于 2021-02-01T12:38:56.127 回答