C++ c++-std=c++;11-stdlib=libc++;使用boost.thread时出现分段错误:OSX上为11
试图运行一些示例代码。C++ c++-std=c++;11-stdlib=libc++;使用boost.thread时出现分段错误:OSX上为11,c++,boost,c++11,boost-thread,libc++,C++,Boost,C++11,Boost Thread,Libc++,试图运行一些示例代码。 但是发生了意想不到的事情。 我想知道boost.thread与libc++一起使用是否存在已知问题 使用-std=c++11编译的程序运行良好,或者没有选项 但是当我用-stdlib=libc++或-std=c++11-stdlib=libc++编译时 结果如下: in main in thread bash: line 1: 37501 Segmentation fault: 11 ./a.out 编译器: 苹果LLVM版本4.2(clang-425.0.28)(
但是发生了意想不到的事情。
我想知道boost.thread与libc++一起使用是否存在已知问题
使用
-std=c++11
编译的程序运行良好,或者没有选项
但是当我用-stdlib=libc++
或-std=c++11-stdlib=libc++
编译时
结果如下:
in main
in thread
bash: line 1: 37501 Segmentation fault: 11 ./a.out
编译器:苹果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;
}
#包括“stdio.h”
#包括
类可调用
{
公众:
void运算符()()
{
printf(“线程中的\n”);
}
};
int main()
{
boost::thread t=boost::thread(callable());
printf(“主\n”);
t、 join();
返回0;
}
boost.thread可能链接到libstdc++。
libstdc++和libc++具有不兼容的ABI。它们不应该在一个程序中同时使用。IIRC,我已经在某个地方看到过这个问题(因为我有一个类似的问题),但我不记得在哪里…:(@B我只在终端中使用了
c++
。@很快谢谢你的建议。我会尝试。你需要确保boost也配置了c++11标志。另外,除非你在寻找中断点或类似的东西,为什么不使用std::thread?@dirvine你是对的。我用c++11再次编译了boost。它运行得很好。所以这只是我使用boost的错误。谢谢。