---
# System prepended metadata

title: Windows 建立C++ STL Thread編譯環境

---

# Windows 建立C++ STL Thread編譯環境
以前學習課本的 C++ 範例
都是直接用現成的IDE去做練習
例如 CodeBlocks、DevC++或VisualStudio
IDE很方便但都有些老舊了
而且集成的編譯環境開起來總是有點笨重
後來練習使用VSCode之後打開新天地
但也是第一次接觸安裝編譯器
就隨便Google了教學安裝了MinGW

---
最近碰到了一些併發的問題
使用到 C++ 中STL的thread
但怎麼樣都編譯不過
```cpp=
#include <thrad>

void func(){
    cout << "Hello from thread" << endl;
}

int main(){
    thread t(func);
    t.join();
    
    return 0;
}

```

![](https://i.imgur.com/kgPklmJ.png)
編譯器竟然不認識STL

後來發現編譯器竟然還有分thread model
在CMD確認g++版本的時候可以看到這個資訊
![](https://i.imgur.com/1l8zngq.png)

---

直接講解決方式吧
我後來把MinGW的編譯器都移除之後
重新安裝了cygwin的編譯器
按照網路的介紹安裝Devel中的
binutils、gcc-g++、gdb後
記得設定系統環境變數 c:\cygwin64\bin
(好像mingw-64也可以 但就沒有另外測試了)

重開機後確認thread model
![](https://i.imgur.com/J897gPY.png)

編譯thread正常，執行也正常
![](https://i.imgur.com/CnxjHwT.png)

打完收工

## 後記
之後又發現cygwin在include path有些狀況
重新再安裝過mingw64搞定