WSL安装与Clion远程调试配置

12 篇文章 2 订阅
10 篇文章 3 订阅

Windows Subsystem for Linux(简称WSL)是一个为在Windows10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。

安装 WSL

要安装Linux需要先启用WSL。

启用

打开: 控制面板 -> 程序和功能 -> 启用或关闭windows功能
勾选“适用于Linux的Windows子系统”项

安装

打开Microsoft store,搜索Linux,选择Ubuntu,并安装。

WSL文件位置

WSL的Linux系统中,所有硬盘分区挂载到/mnt下。
Windows中WSL文件的位置:C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu***\LocalState\rootfs

WSL配置

更改源

Ubuntu默认的apt源是国外的源,可换成国内的源(如ali等)以加快更新。

  sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
  vi /etc/apt/sources.list // 修改,设定为国内源

lsb_release -a // 可查看具体安装的Linux版本
sudo passwd root // 设定root密码

更新并升级

  sudo apt update
  sudo apt upgrade

开发环境

安装所需的开发工具

sudo apt-get update
sudo apt-get install cmake gcc clang gdb build-essential

新建“clion_wsl_env.sh”,并运行以设定SSH环境:

sudo chmod +x clion_wsl_env.sh
./clion_wsl_env.sh

脚本内容

#!/bin/bash
set -e

SSHD_LISTEN_ADDRESS=0.0.0.0

SSHD_PORT=22
SSHD_FILE=/etc/ssh/sshd_config
SUDOERS_FILE=/etc/sudoers

# 0. update package lists
sudo apt-get update

# 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

# 1.1. configure sshd
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
# 1.2. apply new settings
sudo service ssh --full-restart

# 2. autostart: run sshd
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
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
  sudo service ssh --full-restart
fi
EOF

# summary: SSHD config info
echo
echo "SSH server parameters ($SSHD_FILE):"
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}"
echo "Port ${SSHD_PORT}"
echo "UsePrivilegeSeparation no"
echo "PasswordAuthentication yes"

测试SSH(username为安装Ubuntu时设定的用户名):

ssh username@localhost -p22

若使用的是root用户(SSH默认禁止root登录),需要在/etc/ssh/sshd_config中添加以下配置:

PermitRootLogin yes
StrictModes yes

手动配置SSH

也可手动设定SSH。

ssh配置

配置ssh以便远程登录(默认的没有ssh_host_key,无法启动;需要先卸载,安装新的ssh):

sudo apt remove -y --purge openssh-server
sudo apt install -y openssh-server
sudo vi /etc/ssh/sshd_config,修改
	PasswordAuthentication yes # 允许用户名密码方式登录
	PermitRootLogin yes
sudo service ssh restart

设置ssh开机启动:
sudo systemctl enable ssh

ssh连接

MobaXterm是一种功能丰富、体积小巧且有免费版的SSH客户端软件。已自带WSL功能:

  • 添加会话
  • 选择WSL,并在‘Basic WSL settings’中设定Linux的发行版本和起始目录;
  • 设定好后,双击即可启动。

在‘Advanced WSL Settings’中可以设定启动时执行的命令,如:sudo service ssh start

Clion远程调试

为使Clion可方便地远程联调WSL,需要先在WSL上开启SSH,并安装对应开发环境。

Ubuntu上安装开发环境

安装C++依赖环境

  sudo apt install -y cmake gcc clang gdb build-essential

解决Unable to Correct Problems ‘You have Held Broken Packages’(安装Clang失败):

  • aptitude why-not clang // 给出错误原因
  • sudo aptitude install clang // 会给出解决方案,第一个方案选n,采用第二个方案,成功

Clion配置

配置SSH
File - Seetings 中 ‘Build,Execution…’ - ‘ToolChain’ 新增Remote Host Ubuntu:
在Credentials中配置SSH登录信息(推荐使用root账户,避免权限问题),其他让其自动检测

配置同步信息:
Tools - Deplyment - Configuration中配置:

  Connection:
   Type: SFTP
   SSH: 选用前面配置的
   RootPath:/  // 此处要填写根目录,否则会影响后面Deployment目录,然后导致CMake失败
  Mappings:
   Local Path: D:/project/svn/src // 工程目录
   Deployment Path:/project/svn/src // 工程在Linux下的目录

完成后 Tools - Resync with remote host 进行同步

Terminal配置
在 Settings | Tools | Terminal ,修改“application settings”内的“shell path”为:

"C:\Users\username\AppData\Local\Microsoft\WindowsApps\ubuntu.exe" run

CMakeLists示例

示例程序为:

  • 包含两个子目录json和glog
  • 引用jansson和glog库(其头文件存放在lib目录下)

其对应的CMakeLists为:

cmake_minimum_required(VERSION 3.16)

set(BINNAME "cplusLearning")
PROJECT(${BINNAME})

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
    MESSAGE(STATUS "BUILD Debug")
else ()
    MESSAGE(STATUS "BUILD Release")
endif ()

#set(CMAKE_CXX_STANDARD 11)
# Compile options
add_compile_options(-std=c++11 -pthread -O2 -Wl,-Bsymbolic)

# Compile Control Macro
add_definitions(-DX86_64_PLATFROM)

FILE(GLOB SRC_LIST
        "${CMAKE_SOURCE_DIR}/*.cpp"
        "${CMAKE_SOURCE_DIR}/../thirdLib/mongoose-7.x/*.c"
        )

INCLUDE_DIRECTORIES(
        ../thirdLib/spdlog-1.x/include
        ../thirdLib/mongoose-7.x
        ../thirdLib/json-3.10.x/single_include
        ../thirdLib/yaml-cpp-master/include
)

LINK_DIRECTORIES(
#        /opt/jansson/lib
#        /opt/glog/lib
)
#LINK_LIBRARIES(jansson)
#LINK_LIBRARIES(glog)

ADD_EXECUTABLE(${BINNAME} ${SRC_LIST})
set(EXECUTABLE_OUTPUT_PATH ./bin)

#TARGET_LINK_LIBRARIES(${BINNAME} jansson glog)
TARGET_LINK_LIBRARIES(${BINNAME})

其他

1、VMware虚拟机大小写无法切换(CapsLock键作用失效)解决方法:
修改虚拟机vmx文件(如Ubuntu64-V20.vmx),用notepad打开,然后添加:
mks.win32.useInjectedMagic = “FALSE”

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值