错误:'mutex'没有命名类型

ven*_*kat -2 c++ gcc c++11

当我在ubuntu中使用arm-none-eabi-g ++工具链尝试以下代码时,我遇到了编译错误:

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

int main ()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

commpile命令:

arm-none-eabi-g++ -Os -Wall -std=c++11 -fno-rtti -fno-exceptions -c mt.cc
Run Code Online (Sandbox Code Playgroud)

编译错误:

mt.cc:5:1:错误:'mutex'没有命名类型mutex mtx; //关键部分的互斥锁

^

gcc版本:

gcc版本4.8.4 20140725(发布)[ARM/embedded-4_8-branch修订版213147](适用于ARM嵌入式处理器的GNU工具)

Jon*_*ely 5

你得到了正确的评论:

#include  <mutex>    // std::mutex    
Run Code Online (Sandbox Code Playgroud)

但是你没有得到正确的代码:

mutex mtx;           // mutex for critical section
Run Code Online (Sandbox Code Playgroud)

那应该是 std::mutex

  • arm - **none** - eabi意味着没有操作系统的系统,只是裸机,所以你没有大部分的标准库,所以没有pthreads(GCC的std :: mutex建立在它之上). (5认同)
  • 在这种情况下,您的 GCC 实现可能不支持该 ARM 平台的 C++11 线程库。 (2认同)