试图运行一些示例代码 但是出乎意料的事情发生了 我想知道有没有关于与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;
}
答案 0 :(得分:0)
boost.thread可能与libstdc ++有关。 libstdc ++和libc ++具有不兼容的ABI。它们不应该在一个程序中使用。