【问题标题】:C++11 headers missing on Mac OS X 10.8.2 (MountainLion)Mac OS X 10.8.2 (MountainLion) 上缺少 C++11 标头
【发布时间】:2015-05-24 09:53:42
【问题描述】:

我是 Mac 新手。我有一些使用 Boost 的 Linux 和 Windows C++11 源代码,我想在这台 Mac 上构建。安装了 MacPort(我应该改用 Homebrew 吗?)然后成功运行命令,例如:

sudo port install cmake
sudo port install boost
sudo port install openssl
sudo port install gcc49
sudo port install gcc_select
sudo port install --set gcc mp-gcc49

CMake 正确找到了 Boost 1.57.0 并设置了 makefile。但是当我运行make 时,它似乎找不到正常的 C++11 标头,例如“chrono”:

In file included from ../src/test.cpp:10:
../src/test_private.hpp:33:10: fatal error: 'chrono' file not found
#include <chrono>
         ^
1 error generated.

确实,当我去寻找 C++ 头文件时,我在 /usr/include/c++/4.2.1/ 中看到了其中一些文件,但缺少诸如 chronothread 之类的新文件。

在 Mac 上编译 C++11 源代码之前,是否需要安装其他软件包?

【问题讨论】:

  • 我 95% 确定这是 stackoverflow.com/questions/14656856/… 的副本
  • @BillLynch 不,我已经在传递标志,并且传递它不会安装丢失的头文件。
  • 你能告诉我们你用来编译src/test.cpp的命令吗?
  • @BillLynch 是对的。真正的 C++11 头文件安装在 /usr/lib/c++/v1/ 中,而不是我在 /usr/include/c++/ 中查找的位置。为了让事情正确编译,我必须将-stdlib=libc++ 添加到编译器标志中,而不是-std=gnu++11-std=c++11
  • 赞成反对白痴的反对票。

标签: macos c++11 osx-mountain-lion macports


【解决方案1】:

Apple 提供的编译器/工具 Xcode 带有两个 std::lib 的实现:

  1. gcc 的 libstdc++,版本 4.2。
  2. libc++

第一个非常非常古老,不支持 C++11 中的任何内容,例如 &lt;chrono&gt;。第二个很好地支持C++11,但是只能和clang一起使用,不能和gcc一起使用。 Xcode 自带 clang。

您还需要在安装 Xcode 后安装命令行工具:

xcode-select --install

【讨论】:

  • 尝试运行 sudo xcode-select --install 会导致以下错误消息:xcode-select: Error: unknown command option '--install'.
  • 对不起,也许这里有一些信息会有所帮助:stackoverflow.com/questions/9329243/…
猜你喜欢
  • 2013-05-03
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多