在MacOSX Lion上编译gcc 4.6.1 C ++ 0x线程代码时出错

时间:2011-10-05 18:34:41

标签: c++ macos gcc c++11

编译以下代码时:

#include <iostream>
#include <thread>

using namespace std;

void hello()
{
        cout << "Hello World!" << endl;
}

int main()
{
        cout << "starting" << endl;
        thread t(hello);
        t.join();
        cout << "ending" << endl;
        return 0;
}

使用:

$ g++-4.6.1 -std=c++0x -pthread threading.cpp

我收到以下错误:

threading.cc: In function ‘int main()’:
threading.cc:13:2: error: ‘thread’ was not declared in this scope
threading.cc:13:9: error: expected ‘;’ before ‘t’
threading.cc:14:2: error: ‘t’ was not declared in this scope

这是在MacOSX Lion上使用自定义构建的gcc 4.6.1。对gcc 4.6有效的所有其他c ++ 0x特性就像魅力一样。这是MacOSX特定的错误吗?

2 个答案:

答案 0 :(得分:5)

std::thread(以及C ++ 11线程库的其余部分)仅适用于gcc 4.6.1支持的某些平台。不幸的是,MacOSX不是那些平台之一。

我的商业Just::Thread库提供了带有gcc 4.5的32位MacOSX的C ++ 11线程工具,但是还不支持gcc 4.6。

答案 1 :(得分:3)

请参阅http://gcc.gnu.org/PR50196 - Mac OS X不支持我们依赖的pthread的某些部分。构建最新版本无济于事,但GCC 4.7可能会修复它