С++ Threads, std:: system_error - операция не разрешена?

Итак, я написал программу для тестирования потоков на 64-битном kubuntu linux, версия 13.04. На самом деле я ограбил код от кого-то, кто писал тестовую программу.

#include <cstdlib>
#include <iostream>
#include <thread>

void task1(const std::string msg)
{
    std::cout << "task1 says: " << msg << std::endl;
}

int main(int argc, char **argv)
{
    std::thread t1(task1, "Hello");
    t1.join();

    return EXIT_SUCCESS;
}

Я скомпилировал, используя:

g++ -pthread -std=c++11 -c main.cpp
g++ main.o -o main.out

Затем выполнил:

./main.out

В стороне, когда я 'ls -l', main.out появляется в зеленом тексте, как и все исполняемые файлы, но также имеет звездочку в конце своего имени. Почему это?

Вернуться к проблеме в руке: Когда я запустил main.out, появилась ошибка, в которой говорилось:

terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted
Aborted (core dumped)

Кто-нибудь знает, как это исправить?

Ответ 1

Вы не связываете pthread правильно, попробуйте выполнить команду ниже (обратите внимание: порядок вопросов)

g++  main.cpp -o main.out -pthread -std=c++11

ИЛИ

Сделайте это с помощью двух команд

g++ -c main.cpp -pthread -std=c++11         // generate target object file
g++ main.o -o main.out -pthread -std=c++11  // link to target binary