c ++ -std = c ++ 11 -stdlib =带有boost.thread的libc ++给出了OSX上的分段错误:11

时间:2013-05-05 12:44:35

标签: c++ boost c++11 boost-thread libc++

试图运行一些示例代码 但是出乎意料的事情发生了 我想知道有没有关于与libc ++一起使用的boost.thread的已知问题?


使用-std=c++11编译的程序或没有选项运行良好。

但是当我使用-stdlib=libc++-std=c++11 -stdlib=libc++编译时 输出就像:

in main
in thread
bash: line 1: 37501 Segmentation fault: 11  ./a.out

编译器:
Apple LLVM 4.2版(clang-425.0.28)(基于LLVM 3.2svn)
目标:x86_64-apple-darwin12.3.0
线程模型:posix

操作系统:Mac OS X 10.8.3

示例代码非常简单:

#include "stdio.h"
#include <boost/thread/thread.hpp>

class callable
{
public:
    void operator()()
    {
        printf("in thread\n");
    }
};

int main()
{
    boost::thread t = boost::thread(callable());
    printf("in main\n");
    t.join();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

boost.thread可能与libstdc ++有关。 libstdc ++和libc ++具有不兼容的ABI。它们不应该在一个程序中使用。