最近折腾了下在windows下通过qt create18 + wsl 2来编译Linux程序执行文件,记录下步骤,WSL中qt安装反复搞了几次,qt create中配置时可能存在偏差,仅做参考。

1:安装WSL


1.1:在powershell中输入下面指令安装WSL
wsl --install
1.2:等待安装完后输入Linex账户密码(输入密码是屏幕上不会显示字符)

2:在 WSL 中安装编译工具和 Qt 库

打开 Ubuntu 终端,依次执行以下命令。
2.1:更新包列表并安装基础构建工具:
bash
sudo apt updatesudo apt install build-essential cmake gdb git

2.2:安装 Qt 开发库:
Qt5:
bash
sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
Qt6:
bash
sudo apt install qt6-base-dev qt6-tools-dev qt6-tools-dev-tools

说明:
这条命令 sudo apt install build-essential cmake gdb git 安装的是 Linux 下 C/C++ 开发的基础四件套,和你 Qt 开发直接相关:


执行的sudo apt install qt6-base-dev qt6-tools-dev qt6-tools-dev-tools每个包的作用


2.3:安装运行 GUI 程序可能需要的额外依赖:
bash
sudo apt install libgl1-mesa-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0
(防止将来运行 Linux 图形程序时报缺少 xcb 相关的库)
2.4:验证安装:
bash
qmake6 --version
gcc --version
gdb --version
能正常输出版本信息就说明装好了。

3:给 WSL Ubuntu 开启 SSH 服务

Qt Creator 需要通过 SSH 连接 WSL

3.1:打开 WSL Ubuntu 终端,执行以下命令安装并配置 SSH: 
Bash
# 安装SSH服务
sudo apt update && sudo apt install openssh-server -y


# 修改SSH配置,允许密码登录
sudo nano /etc/ssh/sshd_config


在打开的文件里,找到并修改这几行(去掉前面的#注释): 


# 避免和Windows的SSH端口冲突,用2222端口
Port 2222
PermitRootLogin no
PasswordAuthentication yes
保存并退出(按Ctrl+O → 回车 → Ctrl+X)

3.2:彻底重启 SSH 服务(关键!)
WSL 里必须同时重启ssh.socket和ssh.service,否则端口不会更新:
bash
# 先停止所有相关服务

sudo systemctl stop ssh.servicesudo systemctl stop ssh.socket


# 重新加载systemd配置

sudo systemctl daemon-reload


# 启动socket和服务

sudo systemctl start ssh.socketsudo systemctl start ssh.service

3.3:验证修改是否生效
执行下面的命令,查看端口和状态:能够看到active ( running )
bash
sudo systemctl status ssh

4:Powershell测试ssh连接

在 Windows 的 PowerShell 里执行下面的命令,测试 WSL 的 SSH 连接:
powershell
你的用户名@localhost -p 2222
输入你的 WSL 密码,如果能成功登录,说明配置完全正确,接下来在 Qt Creator 里添加设备就不会有问题了。

5:Qt Create中添加Remote Linux Device(WSL)

5.1:编辑->Preferences->设备->添加

5.2:输入信息

5.3:配置密钥连接
下方的「私钥文件」输入框会变成可编辑状态,不用自己填,点旁边的「创建新密钥对」按钮 ;
弹出的窗口里,直接点「确定」,Qt 会自动生成一对 RSA 密钥对,存在你的 Windows 用户目录下(C:\Users\你的用户名\.ssh\)

部署公钥到 WSL
1.生成密钥对后,回到设备设置窗口,点击「部署公钥」按钮
2.会弹出一个密码输入框,输入你的 WSL 用户的登录密码,然后点「确定」
3.Qt 会自动把你的公钥上传到 WSL 的~/.ssh/authorized_keys文件里,部署成功后会弹出提示

5.4:WSL 端权限修复

打开 WSL 终端,直接复制下面的命令执行:

bash
# 1. 确保.ssh目录存在

mkdir -p ~/.ssh


# 2. 设置目录权限为仅自己可读/写/执行(SSH强制要求)

chmod 700 ~/.ssh


# 3. 设置authorized_keys文件权限为仅自己可读/写(强制要求)

chmod 600 ~/.ssh/authorized_keys


# 4. 检查权限是否正确(输出应该是:drwx------ 和 -rw-------)

ls -ld ~/.ssh

ls -l ~/.ssh/authorized_keys


✅ 正确的权限输出示例:

drwx------  2 xxx  xxx 4096 Jun 10 12:00 /home/xxx/.ssh
-rw-------  1 xxx  xxx  398 Jun 10 12:00 /home/xxx/.ssh/authorized_keys

5.5:qt create中测试连接

6:添加 WSL 里的 Qt 6 版本

编辑->Preferences->构建套件(kit)->qt版本
按住shift键再点击右侧的 **【添加】** 按钮(选择wsl路径下的文件,不按shift直接点添加是windows的路径)
    导航到 WSL 里的 qmake 路径,Qt6 的默认路径是: (wsl中查看路径  输入 which qmake6)
/usr/bin/qmake6

这里需要注意,我配置时直接配置/usr/bin/qmake6会有问题,提示ABI检测失败。我要配置成/bin/qmake6才可以,这里一直没搞清楚为什么。离谱的是有时候重启下qt create又正常了,创建项目时可以选择对应的套件了。

7:添加 WSL 里的 C/C++ 编译器

编辑->Preferences->构建套件(kit)->编辑器


·  还是在「Kits」选项卡,切换到 【编译器】 标签页
·  点击右侧的 **【添加】** 按钮,选择 GCC
·  在弹出的配置窗口中:

·设备:选择Ubuntu WSL
·路径:填/usr/bin/gcc(WSL 里的 C 编译器路径)
·名称:自定义为GCC (WSL),点击【确定】


·  再添加 G++ 编译器,重复上面的步骤: 
·设备:Ubuntu WSL
·路径:/usr/bin/g++
·名称:G++ (WSL)
·  点击 **【应用】** 保存配置

8:创建 WSL 专用的「构建套件(Kit)」

这一步是关键,把前面配置的设备、编译器、Qt 版本关联起来:
8.1:切换到「Kits」选项卡的 【Kits】 标签页
8.2:点击右侧的 **【添加】** 按钮,新建一个套件,按下面的配置填写:

8.3:配置完成后,点击 **【应用】**,确认套件状态没有红色感叹号,就说明配置成功了!

9:配置Cmake

编辑->Preferences->CMake->Tools
点击添加,然后在路径处的浏览按钮上按住键盘shift再点击浏览,选择wsl中cmake路径。(which cmake指令可查看)

10:配置CMake编译套件

11:新建测试程序验证

注意这个工程需要建立在WSL路径下才可以正常选择CMake或者qmake套件kit。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐