Clion连接wsl
第一步安装WSL
①启用适用于 Linux 的 Windows 子系统
以管理员身份打开 PowerShell,并运行以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
②启用虚拟机功能
以管理员身份打开 PowerShell,并运行以下命令:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
③在Microsoft Store下载合适版本的Ubuntu
点击get按钮,下载
下载完成后,打开
sudo touch a.sh ---------------------创建脚本文件
sudo vim a.sh ------------------------打开并编写脚本文件
进入脚本文件后点击键盘insert键,进入编写模式,将脚本内容复制到里面,按esc键进入编辑模式,输入两个ZZ保存并推出。
if [ -e "/dev/vsock" ]; then # in case of WSL2
SSHD_FILE=/etc/ssh/sshd_config
0.1. reinstall sshd (workaround for initial version of WSL)
sudo apt remove -y --purge openssh-server
sudo apt install -y openssh-server
0.2. install basic dependencies
sudo apt install -y cmake gcc clang gdb valgrind build-essential
sudo cp $SSHD_FILE ${SSHD_FILE}.date '+%Y-%m-%d_%H-%M-%S'.back
sudo sed -i '/^Port/ d' $SSHD_FILE
sudo sed -i '/^ListenAddress/ d' $SSHD_FILE
sudo sed -i '/^UsePrivilegeSeparation/ d' $SSHD_FILE
sudo sed -i '/^PasswordAuthentication/ d' $SSHD_FILE
echo "# configured by CLion" | sudo tee -a $SSHD_FILE
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}"| sudo tee -a $SSHD_FILE
echo "Port ${SSHD_PORT}" | sudo tee -a $SSHD_FILE
echo "UsePrivilegeSeparation no" | sudo tee -a $SSHD_FILE
echo "PasswordAuthentication yes" | sudo tee -a $SSHD_FILE
sudo service ssh --full-restart
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc
echo "%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a $SUDOERS_FILE
sshd_status=$(service ssh status)
if [[ $sshd_status = "is not running" ]]; then
sudo service ssh --full-restart
echo "SSH server parameters ($SSHD_FILE):"
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}"
echo "UsePrivilegeSeparation no"
echo "PasswordAuthentication yes"
https://www.cnblogs.com/citrus/p/13565519.html
①打开clion,通过 文件->设置->构建,执行,部署->工具链 打开以下页面
②点击+好按钮添加wsl
③wsl里面内容将会自动填充
④设置ssh
通过以下目录 文件->设置->工具->ssh配置 找到以下页面
用户名和密码分别是wsl中你自己设置的用户名和密码
端口号是在脚本中设置的端口 2222
——————————————————————————————————————————————————————
自此clion和wsl连接配置成功!!!
——————————————————————————————————————————————————————
配置clion连接qt库和交叉编辑器
第一步,解压qt库和交叉编辑器
①在wsl命令窗口,解压qt库和交叉编辑器
通过cd命令,进入存有qt库和交叉编辑器压缩包的文件下
利用一下命令进行解压
tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar
tar -xvf qt-5.12.3.tar
这里我已经解压完成了,前面两个文件为解压后的文件
第二步,配置toolchain.cmake文件中的路径
①打开toolchain.cmake,并修改红色处路径位置为自己文件目录下qt库和交叉编辑器的位置
第三步,修改clion中toolchain.cmake路径
①通过 文件->设置->构建,执行,部署->CMake 打开以下页面
点击+号按钮添加Release-WSL 构建类型为:Release 工具链WSL
CMake选项:-DCMAKE_TOOLCHAIN_FILE=/mnt/d/Co2/package/toolchain.cmake
即: -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake文件目录
点击确定完成设置
———————————————————————————————————————————————————————
自此qt库和交叉编辑器导入clion !!!!
———————————————————————————————————————————————————————
运行项目
第一步,将项目源码文件放到英文目录下
第二步,将项目导入Clion中打开
第三步,找到main.cpp文件并运行
出现的错误
错误一:项目构建到70%出现错误
原因:wsl Ubuntu版本不对
解决方法:将Ubuntu18.0升级到Ubuntu20.04版本后构建成功
错误二:构建到100%后出现报错
cannot execute binary file: Exec format error
原因是编译链中的GCC是32位版本,而wsl本身是不支持的。
解决方法:
安装qemu-user-static软件包,添加i386二进制文件格式,启用i386体系结构,更新软件包列表,并安装一些i386软件包
wsl指令如下:
①安装qemu和binfmt
sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
这些命令将通过执行qemu-i386-static来激活i386支持,并将配置文件放入/var/lib/binfmts/中,以供将来重新激活。
②每次重新启动WSL并需要i386支持时,都需要重新激活此功能
sudo service binfmt-support start
③启用i386架构和软件包
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install gcc:i386
错误三:缺少文件
下载arm-linux-gnueabihf 和 arm-linux-gnueabi 在两个文件中lib文件里面找到缺少的文件
通过cp命令 复制到wsl主目录下的lib文件中
例如:第一次缺失了libpthread.so.0文件
则在usr/arm-linux-gnueabihf/lib中存在
则在该目录下通过指令
cp libpthread.so.0 /lib 完成复制
最后通过多次复制,最后运行成功!