Windows Qt Creator + WSL Ubuntu 编译 x86_64 Linux 程序环境搭建说明
最近折腾了下在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。
更多推荐




所有评论(0)