2017-06-05 88 views
1

簡單的問題:爲什麼在Bash For Windows子系統中g ++的版本低於Ubuntu本身?g ++ Windows和Ubuntu Bash之間的區別

複雜的問題:有沒有辦法將Bash For Windows子系統上的g ++版本快速轉發到正常的Ubuntu系統?

具體來說,這個問題是我需要使用C++ 17文件系統實現/支持所產生出來: 在相同的編譯命令(g++ -Wall -std=c++1y main.cpp -o main),相同的文件將無法在Windows上編譯,但將在Ubuntu:

#include <experimental/filesystem> 

int main() {} 

有什麼建議嗎?

+0

如果它在Ubuntu中編譯,你可以嘗試交叉編譯的Windows? – Makogan

+1

理論上,你可以使用當前的編譯器來引導你想要的版本,也許像g ++ 7.1一樣新。實際上,這可能會很棘手。 –

+2

[Bash For Windows](https://msdn.microsoft.com/en-us/commandline/wsl/about)(和[他們的GitHub](https://github.com/Microsoft))是實驗性的,並由微軟。微軟並沒有像現在這樣保持最新狀態。例如,[OpenSSL的微軟端口](https://github.com/Microsoft)仍然落後於OpenSSL的建議。微軟最近從1.0.1移到1.0.2。 – jww

回答

0

正如在原帖的評論中指出的那樣,Linux for Windows子系統中的g ++由Windows維護,here,並且不是最新的。因此,要編譯更新版本的gcc的Linux子系統,this指南可以遵循(爲我工作,只需要將-lstdc++fs添加到我的編譯命令的末尾,一切工作完美)。