这篇文章底部的代码编译得很好,但会生成一个无用的二进制文件
$ clang++ -v
clang version 3.3 (trunk 168461)
Target: x86_64-unknown-linux-gnu
Thread model: posix
当给出这个命令时
clang++ -std=c++11 -pthread -s -O3 -DNDEBUG source.cpp -o source
二进制文件总是生成这个
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Aborted (core dumped)
我不明白的是:
- 如果 C++11 在标准中包含线程模型,为什么我需要链接 POSIX 线程库,为什么标志
-std=c++11
还不够? - 如果 clang++ 支持
-pthread
与否,根据我所阅读的内容,它应该支持 pthreads
谢谢。
#include <iostream>
#include <thread>
void f()
{
std::cout << "Hello World\n";
}
int main()
{
std::thread t(f);
t.join();
}