2016-03-18 6 views
-3

Когда я попробовать следующий код в убунту с рычажным непереключаемых EABI-г ++ инструмент цепи я получаю ошибку компиляции:ошибка: 'мьютекс не называют типа

#include <iostream> 
#include <thread> // std::thread  
#include <mutex> // std::mutex  
mutex mtx;   // mutex for critical section 

int main() 
{ 
    return 0; 
} 

commpile Команда:

arm-none-eabi-g++ -Os -Wall -std=c++11 -fno-rtti -fno-exceptions -c mt.cc 

ошибка компиляции:

mt.cc:5:1: error: 'mutex' does not name a type mutex mtx; // mutex for critical section

^

GCC версии:

GCC версии 4.8.4 20140725 (релиз) [ARM/встраиваемого 4_8 Гиса редакция 213147] (GNU Инструменты для ARM встраиваемых процессоров)

+0

Возможный дубликат [Mutex C++ в пространстве имен std не определяет тип] (http://stackoverflow.com/questions/14191566/c-mutex-in-namespace-std-does-not-name-a-type) – Idos

+3

@venkat Вы забыли 'std ::'. – Biffen

+1

@Idos, нет, это не та же проблема. –

ответ

5

Вы получили комментарий право:

#include <mutex> // std::mutex  

Но тогда вы не получите правильный код:

mutex mtx;   // mutex for critical section 

Это должно быть std::mutex

+0

Как я уже говорил выше, я сначала попытался с std :: then, я получил эту ошибку" mt.cc:5:1: ошибка: 'mutex' в пространстве имен 'std' не называет тип std :: mutex mtx; // mutex для критического раздела ^ « – venkat

+0

В этом случае, скорее всего, ваша реализация GCC не поддерживает библиотеку потоков C++ 11 для этой платформы ARM. –

+2

arm - ** none ** - eabi означает систему без ОС, только голый металл, поэтому у вас нет большей части стандартной библиотеки, поэтому нет pthreads (на котором построен std :: mutex GCC). –

Смежные вопросы