【发布时间】:2018-04-15 08:56:02
【问题描述】:
我现在已经尝试了很多事情并得出了一些结论。也许,我监督了一些事情,但似乎我无法完成我想要的。
问题是:有没有可能在 MacOS High Sierra 上使用 OpenMP 和 boost 编译 C++?
一些发现(如果我错了,请纠正我):
- Clang 支持 OpenMP,但 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 将是另一个故事(不再支持)。
【问题讨论】:
-
使用 TBB 代替 OpenMP。
-
@manni66 一切都说明了这一点,我同意......不过,我想移植的软件进行了相当多的重构工作
-
您的问题的答案是yes和yes。您的发现表明了问题:不是标准 - 无法轻松 更改 - 不是容易 更改。现在对于 SO,教程请求是题外话,但您没有描述您似乎遇到的具体问题。
-
@Zulan 我不是在找教程,否则这个问题被关闭了。如果我所有的假设都是正确的并且我不监督任何事情,那么这就是我可以接受的问题的答案。不过,我还不能完全确定
-
你为什么不用 gcc 自己构建
Boost呢?我希望这不是一项大任务。不确定它如何与“MacOS 随附的标准 MacOS-clang 编译器一起使用,这也是 XCode9 支持的唯一编译器”,您可以使用 gcc 吗?否则我根本不明白你为什么提到它