CLion and Linux toolchain on Windows are now friends!
In this post we’ll discuss how to work with WSL in CLion and how Windows users can benefit from this support.
Why do I need it?
CLion is a cross-platform IDE, that means you can run it on Windows, Linux, and macOS. From the very beginning it works with GCC and Clang compilers, which means on Windows it requires Cygwin or MinGW (or MinGW-w64). Later we introduced Microsoft Visual C++ compiler support, for those users who have it installed and want to use inside CLion on Windows.
Besides, we know that there are C++ developers who have Windows desktops but require Linux toolchain for building their projects. Cygwin could be a work-around. With Windows 10 Microsoft however introduced an even better way – Windows Subsystem for Linux. You simply get the prefered Linux distribution (Ubuntu, OpenSUSE and SLES are supported), configure the WSL and enjoy your new Linux environment in Windows. And now you can benefit from it in CLion!
That means the following is possible:
- Configure WSL toolchains in CLion on Windows
- Use CMake, C, and C++ compilers from Linux in CLion running on your Windows machine
- Debugger support is available
- Catch memory errors and leaks right from the IDE with the Valgrind Memcheck integration
WSL
Windows Subsystem for Linux (WSL) is a compatibility layer for running Linux binary executables natively on Windows 10. Let’s start with the simple instruction on how to set it all up:
- Update your Windows 10 machine to the latest “Fall Creators Update” (mininum version 1709, build 16299.15).
- Install WSL distribution, for instance Ubuntu.
- Run Ubuntu, create a new user, keep in mind username:password.
- Setup Ubuntu WSL environment:
- install cmake, gcc, or/and clang,
- configure and run openssh-server.
Check ubuntu_setup_env.sh script that can help you with the configuration:
wget https://raw.githubusercontent.com/JetBrains/clion-wsl/master/ubuntu_setup_env.sh && bash ubuntu_setup_env.sh
If you are using Linux distribution different from Ubuntu, you might need some adjustments to the script.
- To check the ssh connection, run the follow command in your WSL distribution: ssh username@localhost -p <port_number> (2222 in case of our script)
Full instruction on our confluence page.
Configure WSL toolchain in CLion
Starting with the CLion 2018.1 EAP you can use WSL as a toolchain in CLion. Go to Build, Execution, Deployment | Toolchains and select WSL in the environments dropdown:
Configure remote credentials (provide port, username and password):
Check if everything is connected and working, CMake, C, and C++ compilers are detected and available to use:
Known issues and limitations
- There is a known issue is with the mixed case-sensitivity. Due to the IntelliJ platform issue, there is an issue with WSL file-system which is case-sensitive and Windows FS which is not. As workaround you can pass properties (Help -> “Edit Custom Properties…”): idea.case.sensitive.fs=true, restart an IDE and rebuild the project index (File -> “Invalidate Caches and Restart”) after that.
That’s it! And a short demo at the end:
What’s next
WSL support is a first step to implement full remote development support in CLion. It’s planned to work over ssh, just the same way the WSL now works in CLion, and will be available on all platforms.
We encourage our Windows users to try out the new WSL toolchains support in CLion, and report any issues they find to our bug tracker.
Your CLion Team
JetBrains
The Drive to Develop
Mats Brorsson says:
January 24, 2018This is great news. But how can you get the EAP versio to use the same license as the regular one? I cannot find an option to enter activation code.
Anastasia Kazakova says:
January 24, 2018EAP is free and the build is valid for one month. So you don’t need a license to use it
Christian says:
January 25, 2018Should we be able to select an WSL instance which is not within AppData/… ?
There’s a […] Button but it’s disabled for me, so I cannot select my WSL instance located in C:/Linux/ubuntu
vasily_romanikhin says:
January 25, 2018At the moment CLion doesn’t allow to choose custom WSL location, it works only with WSL distributions which are installed via the Windows Store.
Stuart Bowman says:
March 8, 2018Super bummed about this limitation! When will you allow user-selected WSL distributions? (I only ask because I’m unable to update my Win10 to the latest, so I’m using an older WSL binary that is not in AppData/.)
Vasily Romanikhin says:
March 12, 2018Here’s the ticket for your requirements https://youtrack.jetbrains.com/issue/CPP-11841.
Please note that initial (beta) version of WSL has critical bugs for us, for example “Cmake cannot find the gcc/g++ compilers” https://github.com/Microsoft/WSL/issues/272.
As result CLion supports only stable version of WSL distribution (starting from FCU, version 1709, build 16299.15).
Evangelos Karafantalos says:
January 25, 2018Hello,
I’m trying to test WSL feaute but I keep getting “Credentials are not valid for this WSL distribution(Ubuntu).”
However I can normally ssh both from putty and withing WSL.
Bear in mind I’m using a custom port(changed correctly) for ssh and my username is case sensitive(I’ve also added the custom property).
WSL Version: Ubuntu 16.04.3 LTS as reported from Clion.
vasily_romanikhin says:
January 26, 2018Hello,
I’ve created an issue (https://youtrack.jetbrains.com/issue/CPP-11852) for your question, let’s discuss the details in the ticket. Could you please describe in the ticket which windows version (build number) you use, the way of WSL installation.
Arty says:
February 24, 2018Really looking forward to custom paths for Cmake and compilers. WSL Ubuntu ships with Cmake 3.5.1 which is too low for most of our projects (we use 3.8)
vasily_romanikhin says:
February 26, 20181. As temporarily solution you could try to replace the original cmake with your custom cmake using symlinks.
2. Here’s the issue for your requirement: https://youtrack.jetbrains.com/issue/CPP-12196
Christian says:
March 27, 2018Hi,
I had also problems with the old CMake version. For the latest build (2018.1 RC build 181.4203.505) you can change the CMake path in the settings of the WSL toolchain (File | Settings | Build, Execution, Deployment | Toolchains).
Note: You can change the parameters for CMake in the settings too (File | Settings | Build, Execution, Deployment | CMake). Make sure to choose the WSL toolchain.
I am very pleased with this toolchain, since it replaces an annoying toolchain for me (WSL running an XServer that serves CLion to an XClient running on Windows itself).
yuanhonglong says:
March 30, 2018I followed all the steps,but when I run :
ssh sworddestiny@localhost -p 2222
I get an error :
ssh: connect to host localhost port 2222: Connection refused
yuanhonglong says:
March 30, 2018and Clion can not connect to my WSL 🙁
Vasily Romanikhin says:
April 1, 2018Hello!
Which WSL distribution do you use?
If it’s not critical for you I’d recommend to reinstall Ubuntu WSL-distribution and use this instruction (https://confluence.jetbrains.com/display/CLION/WSL+dev+environment+configuration).
If it doesn’t help please check your Firewall (or other Antivirus software) settings, it can block ssh connection.
Vasily Romanikhin says:
April 1, 2018> and Clion can not connect to my WSL
It’s predictable, because your ssh connection is configured properly.
yuanhonglong says:
April 4, 2018I use windows 10 version 16299.309. My WSL is ubuntu. I closed the firewall and reinstalled my WSL.B!U!T! Nothing good.
I have used ubuntu for years.I followed all the instructions and checked the output. I think some (ipv6) network error happened. Maybe I should change my software source (I’m a Chinese),or change the sshd config to listen the ipv6 network.
Unfortunately, I have no more time. So I just delete my WSL. Ubuntu desktop is much better than WSL, isn’t it?
(By the way, I also have Mingw. I can use Clion both in Windows and Ubuntu desktop. Why I must use WSL?)
Vasily Romanikhin says:
April 4, 2018> Ubuntu desktop is much better than WSL, isn’t it?
It depends, some people prefer Windows (or they have to use Windows) and in the same time they need Linux development environment. In that case WSL is good alternative to virtual machine.
> Why I must use WSL
You don’t have to use WSL, especially if you use UbuntuOS.
But for Windows users it can be convenient, for example using WSL you can run your program on Valgrind, which originally is not available for Windows.
yuanhonglong says:
April 5, 2018You are right, a person who use both UbuntuOS and Windows didn’t need a WSL or virtual machine. I am wasting my time.
I am just curious about WSL.
And finally find nothing useful for me. =_=!
emmmmmmm……
🙂
Thank you.
Luca says:
April 10, 2018Does this WSL toolchain support access to a remote server? i.e. in remote credentials provide a username and ip address of a separate machine running an ssh server? This would allow me to develop on Windows but build on a remote linux server.
Anastasia Kazakova says:
April 10, 2018For now it’s implemented for WSL case only (one machine with Windows 10 and WSL set). But later this year we plan to implement a full remote access feature.
Alireza Naghizadeh says:
April 29, 2018Hi, can you please also add the swift support for this method? In this way we can easily use swift on windows, right now only c and c++ works.
Anastasia Kazakova says:
May 3, 2018There is a corresponding ticket: https://youtrack.jetbrains.com/issue/CPP-12373. Please vote it up and follow for the updates. We’ll consider it later.
sancelot says:
June 1, 2018Hi,
I am not interested in using WSL, but using ssh connection to compile using a remote system.
unfortunately this does not seem being possible ????
Regards,
S.Ancelot
Anastasia Kazakova says:
June 1, 2018It’s possible now only with WSL. But we hope to have proper remote compile support this year.
Alex. says:
July 27, 2018Hello.
Tell me please, if I need to copy it to the address /usr/sbin after compiling the project, how can this be done? Copy there, and already from there run this project.
Thank you.
Alex. says:
July 27, 2018Now i use CLion 2018.2
Anastasia Kazakova says:
July 27, 2018Copy what? I guess you have your sources available at WSL, build and launch there automatically via CLion
Alex. says:
July 27, 2018I compile the project, I get the binary file.
And I need to copy it into /usr/sbin, and run.
Is it possible?
Alex. says:
July 27, 2018I think that this is a connection to ssh.
Anastasia Kazakova says:
July 27, 2018Hm. I guess you can write a script that copies and runs it, and then point CLion to this script as an executable in the Run Configuration. So CLion will call it when you hit run in the IDE for this configuration.
CodeDawg says:
December 22, 2018I am not able to create the WSL toolchain:
I am running CLion v2018.3.2 and WSL on Windows 10.
CLion: File>Settings>Build>Toolchains>Environment set to WSL
Error message “Not specified” underneath an empty text box.
Also, the dialog won’t let me manually select the WSL executable.
Downloaded and ran the ubuntu_setup_env script. I can connect to WSL using SSH, but the error message under “Credentials” in the settings dialog reads:
“There is no available WSL distribution”
From the WSL terminal:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
From the PowerShell terminal:
wslconfig /l /all
Windows Subsystem for Linux Distributions:
Legacy (Default)
I currently have a working toolchain using Cygwin.
Any suggestions on how to get the WSL toolchain working?
Vasily Romanikhin says:
December 24, 2018“Legacy” WSL is not supported by CLion.
Make sure that Windows version is 1709 (build 16299.15) or higher and install new WSL distribution from Windows Store (e.g. Ubuntu 16.04 LTS https://www.microsoft.com/en-us/p/ubuntu-1604-lts/9pjn388hp8c9?activetab=pivot:overviewtab).
CodeDawg says:
January 1, 2019Thank you Vasily. After installing a new WSL distro I was able to setup the CLion toolchain with it.
There were some issues along the way. These were the steps I took to solve the problems:
Installed Ubuntu 18.04 from the Windows Store and set it as “default” using wslconfig.exe. Ran the ubuntu_setup_env in the new Bash shell.
CLion (or any other terminal) still failed to authenticate the WSLuser/password. Task manager showed that there were several ssh tasks running so I manually shut those down.
Another attempt to ssh into WSL failed with a “man in the middle” attack warning and a suggestion to remove the host key.
After removing the host key I was able to ssh into WSL as well as setup the CLion toolchain.
Mariusz says:
February 26, 2019Hi there,
Maybe it’s a stupid question, but what’s the password to the ssh port?
Anastasia Kazakova says:
February 26, 2019That’s the password for the user you create on WSL.
Wiktor says:
March 6, 2019Is it possible to use the WSL terminal in CLion? If yes, how do I do that?
Vasily Romanikhin says:
March 7, 2019No, it’s not possible to use directly WSL terminal in CLion.
But if you successfully setup WSL toolchain in CLion you can open remote terminal `Tools -> Start SSH session` (in your case it will be WSL terminal).
Daniel Desery says:
April 11, 2019I now made it through all the steps, including the check with “ssh [user]@localhost -p2222” and this also worked.
But CLion still can´t find the toolchain, it´s saying “not found” for the first listbox (where ubuntu.exe is configuered, which is in the right location!)
I am using
– Windows 10, 1709/16299.904
– CLion 2019.1, 191.6183.77 March 25 2019
Many thanks and cheers,
Daniel
Vasily Romanikhin says:
April 11, 2019Hi Daniel,
It seems that you use old Windows version.
The original reason of the problem is WSL issue (https://github.com/Microsoft/WSL/issues/2592) which was fixed in 1803 Windows update.
So to get CLion 2019.1 work with WSL (in case you use old Windows10 version) you can enable `wsl.close.process.input` Registry option (Help -> Find Action -> type “Registry”) OR you can update your Windows machine (>= 1803 version).
You can find the additional details in the ticket https://youtrack.jetbrains.com/issue/CPP-15541
Daniel Desery says:
April 15, 2019Great, thanks!
tom says:
August 11, 2019how should I use Third-party libraries in Clion with WSL enviroment
Anastasia Kazakova says:
August 12, 2019If the library is available on WSL, just add it in your CMake. CLion will work with it correctly.
Ilia Lotosh says:
October 29, 2019Hi,
I’m trying to configure CLion 2019.2.4 to use WSL, but I don’t have WSL listed in the Environment box (only MinGW, Cygwin and Visual Studio). What am I doing wrong?
(I have WSL installed and I even managed to install CLion inside the WSL and open it using X-Windows)
Anastasia Kazakova says:
October 29, 2019You don’t need CLion inside the WSL, you need it installed on Windows. Then follow the instruction: https://www.jetbrains.com/help/clion/how-to-use-wsl-development-environment-in-clion.html
You should have WSL option in the Environment dropdown.
faruk says:
November 20, 2019I receive this error, everything seems fine on settings. I’m using Debian WSL;
Process finished with exit code -1073741515 (0xC0000135)
Anastasia Kazakova says:
November 21, 2019Could you please contact our support at clion-support@jetbrains.com and attach the IDE log.
Bhavesh says:
January 3, 2020Thanks this works on debian
mitien says:
January 31, 2020is it possible to use windows Clion to run WSL but custom sysroot and toolchain? or at least make WSL cmake alias?
Vasily Romanikhin says:
January 31, 2020Could you please elaborate your case.
Anteros says:
June 6, 2020I just have a small question, all the work have been done except this one(when I set the toolchains, it warned me that the WSL GDB version: 9.1, supported versions are 7.8.x-8.3.x), how shoud I switch to a lower version? hope you can help me cope with it…
Anastasia Kazakova says:
June 6, 2020You can still use v9.1. Supported versions range means we test with it and no critical issues are present. For 9.1 the integration is still in development (related ticket https://youtrack.jetbrains.com/issue/CPP-19679). But that doesn’t limit the version you can actually use, just be aware issues are possible.
Anteros says:
June 7, 2020thank you!!!!!!:)
Roman says:
June 6, 2020I got the toolchain to run successfully, but my project has file names incompatible with Windows, so I can’t even check it out from git.
As a work-around, I put the project on Ubuntu (within wsl), but now CLion gives me a CMake error:
CMake Error: The source directory “//wsl$/Ubuntu/home/repo_from_git” does not exist.
Vasily Romanikhin says:
June 15, 2020Have you tried to checkout sources (within WSL) to `/mnt/c/working_dir/repo_from_git` and then open it in CLion using regular Windows path `C:\\working_dir\repo_from_git` ?