Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: SuleymanStalskiy от Июнь 01, 2014, 15:55



Название: опции компиллятора для многопоточности
Отправлено: SuleymanStalskiy от Июнь 01, 2014, 15:55
Добрый день, прошу помочь со след. проблемой
ОС - ubuntu 14.04 64bit, IDE - QtCreator - 3.0.1
Имеется код:

Код:
#include <iostream>
#include <thread>

using namespace std;

void printHello()
{
    cout << "stream 1" << endl;
    cout << "Hello" << endl;
}

int main()
{
    thread t1(printHello);
    t1.join();
    cout << "finish main" << endl;
    return 0;
}

компилится без ошибок, при запуске след. ошибка:
terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted


нашёл решение - компилляция со след флагами:
g++  thread.cpp -o main -pthread -std=c++11 -Wl,--no-as-needed

Вопрос - КАК  и КУДА добавить флаги -Wl,--no-as-needed в QtCreator?


Название: Re: опции компиллятора для многопоточности
Отправлено: alex312 от Июнь 01, 2014, 16:16
В *.pro   файл добавь строку
Код:
QMAKE_CXXFLAGS += -Wl,--no-as-needed

http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#qmake-cxxflags


Название: Re: опции компиллятора для многопоточности
Отправлено: SuleymanStalskiy от Июнь 01, 2014, 16:26
добавил в .pro file QMAKE_CXXFLAGS += -Wl,--no-as-needed
не помогло


Название: Re: опции компиллятора для многопоточности
Отправлено: alex312 от Июнь 01, 2014, 17:16
у меня получилось вот так :

Код:
QMAKE_CXXFLAGS += -pthread -std=c++11
QMAKE_LFLAGS += -Wl,--no-as-needed


LIBS += -lpthread -lrt


Название: Re: опции компиллятора для многопоточности
Отправлено: SuleymanStalskiy от Июнь 01, 2014, 17:42
большое спасибо. ТОЛЬКО с добавлением трёх строк программа запустилась без ошибок.
Хотя QMAKE_CXXFLAGS += -pthread -std=c++11 можно убрать, вынеся с++11 в строку:
CONFIG += c++11
думаю, что тема закрыта