我现在已经尝试了很多事情并得出了一些结论。也许,我监督了一些事情,但似乎我无法完成我想要的事情。
问题是:是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C++?
一些发现(如果我错了请纠正我):
- OpenMP 受 Clang 支持,但不受 MacOS 附带的标准 MacOS-clang 编译器的支持,这也是 XCode9 支持的唯一编译器
- g++ 支持 OpenMP
- 如果我通过 homebrew 安装 Boost,那么它将使用 clang 编译器(不能轻易更改),因此将使用 libc++
- g++默认使用libstdc++,不易更改
因此,似乎我不能两者兼得……只有当我使用 gcc 时才支持 OpenMP。但是 gcc 使用 libstdc++ 而不是 libc++,因此如果我尝试使用 libc++ 链接通过自制程序安装的 boost,则会出现链接器错误。
是否有机会同时运行 OpenMP 和 boost?
PS:请不要链接到一些>1年的线程,XCode8是另一个故事(早期的XCode版本支持不同的编译器),clang-omp将是另一个故事(不再支持)。
标准Apple的clang支持OpenMP。他们只是禁用了驱动程序选项。但您可以这样使用前端选项:clang -Xclang -fopenmp <you_program> -L <path to libomp.a> -lomp
另外,您需要设置 DYLD_LIBRARY_PATH 环境变量:export DYLD_LIBRARY_PATH=<path to libomp.dylib>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)