【问题标题】:How can I get C++11 library support with the Intel compiler on Mac OSX?如何在 Mac OSX 上使用英特尔编译器获得 C++11 库支持?
【发布时间】:2011-08-24 15:04:55
【问题描述】:

我想将一个相当大且仍在增长的 C++ 应用程序从 PC 移植到 Mac,并继续支持两个平台上的并行开发。在 PC 上,我们使用 MSVC2010,并部署了一些 C++11 功能。在 Mac 上,我们使用的是 XCode 4.0.2。为了改进平台无关性并支持我们正在使用的内联汇编,我们在两者上都部署了英特尔编译器。但是,编译器不附带库,因此我们依赖供应商提供的库。在 Mac 上,这意味着不支持 C++11 库,因为我们非常热衷于使用 std::forward 等功能。我无法在 Mac 上使用英特尔编译器构建 libc++,否则我的问题将得到解决。除了滚动我们自己的库之外,还有其他方法吗?

【问题讨论】:

  • 安装虚拟机并运行简单的 Linux 发行版,例如 Ubuntu 服务器(允许您跳过 X11、GUI 等)。这些往往有当前的 g++ 版本,接近现在 C++11 的最终草案。
  • “在 Mac 上,这意味着对 C++11 库的支持”是什么意思?我不会特别担保std::forward,但clang(llvm 的C++ 编译器)支持许多C++11 特性,并且它随Xcode 4.x 一起提供。
  • Dirk:明确地说,这是一个商业应用程序。它需要在 OSX 上运行。如果您可以在不使用 OSX 的情况下实现这一目标,我会全力以赴。 Richard:libc++ 确实可以使用 Clang 构建并提供广泛的 C++11 支持。但是,libc++ 不能用英特尔编译器构建(除非有人能告诉我怎么做?)。我会很高兴地通过库来修复英特尔编译器错误,但我的雇主可能会对此有些不满,如果这比基本上滚动我们自己对移动构造函数和赋值运算符的支持要花更长的时间。

标签: macos c++11 icc


【解决方案1】:

如果您真的无法在 Mac 上切换到其他编译器,我建议您联系英特尔的用户支持,让他们知道 C++11 支持对您很重要,并询问他们现在实施它的积极程度新语言是 ISO 标准。

他们可能也知道一个工作库。

【讨论】:

    【解决方案2】:

    Clang 和 Intel 15 在 Mac 和 Linux 上都支持 C++11。官网介绍了ClangIntel编译器的C++11特性现状。

    在 Mac 上,英特尔编译器使用系统 C++ 库,该库可能与包含的 Clang/LLVM 工具链相关联。

    $ otool -L threads
    threads:
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    

    threads 程序可以是调用std::thread 调用的任何程序,例如

    #include <thread>
    
    int main()
    {
        std::thread::id id;
    }
    

    【讨论】:

    • 需要引用。特别是您需要说明 ICC 将使用什么标准库。
    • 我不知道如何引用我自己对这个主题的原创研究,例如验证 github.com/jeffhammond/HPCInfo/blob/master/c%2B%2B11/… 之类的代码在 Intel 15 上运行良好。
    • 请立即删除您的反对票,因为我已经引用了您要求的确切内容。
    • 是的,libc++ 是 Clang 标准库。谢谢! (顺便说一下,这个网站更喜欢描述一个可重复的过程而不是引用。所以你可以说icc - &lt; (echo '#include &lt;iostream&gt;'; echo 'int main() { std::cout &lt;&lt; "hi\n"; }'); otool -L a.out如果可行。或者,不提供说明,只提到你编译了一个程序并使用了otool。有很多懒惰的答案,所以一定不要这样出现。)
    猜你喜欢
    • 2012-12-23
    • 1970-01-01
    • 2013-04-28
    • 2017-03-09
    • 2016-01-26
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多