搭建一种跨平台qt5远程编译环境

电子说

1.2w人已加入

描述

前言

所谓的跨平台qt5远程编译环境,就是实现在本机的VS上写Qt程序,然后在远程的linux机器上进行编译,得到Qt的Gui或非GUI程序。

跟交叉编译比起来,远程编译不需要进行复杂的交叉编译工具配置;由于是自机编译,也不会存在开发工具版本匹配问题,稳定性高于交叉编译;远程编译的缺点也比较突出:目标机需要安装完整的开发工具,编译速度会受到目标机性能的严重限制。

简言之,对于一些装了Linux,但是性能有限、缺少相应开发文档、交叉编译存在风险的机器/开发板,比如说来源不明的x86工控机、Orange/Banana Pi 这类仿照树莓派的开发板,推荐通过远程编译的方式进行开发部署。

对于树莓派、Tinker Board之类的开发板,VisualGDB提供了经测试的交叉编译工具、直接使用即可。

测试环境

开发环境:电脑(Win10 21H2,x64)+VS2019+VisualGDB5.6+Qt5.11, VS安装了Qt插件

目标环境:80收的工控机,处理器为Atom D2550, 已经安装64位Debian11(带GNOME图形)。[关在上海两个月了,条件艰苦,只能找到这么一台机器了,唉]

一、目标机准备

1.开启ssh并允许root登录

VisualGDB在之后调试的时候如果用sudo的方式调试比较容易报错,最好直接用root连接。

目标机上:

nano /etc/ssh/sshd_config

用vim也可以,个人觉得nano比vim方便多了。修改以下项:

PermitRootLogin yes #允许root登录
PermitEmptyPasswords no #不允许空密码登录
PasswordAuthentication yes # 设置是否使用口令验证。
X11Forwarding yes #启用远程图形支持

重启一下ssh服务

/etc/init.d/sshd retart

再测试一下用root连接目标机。root登录有风险,以后机子要联网使用的时候记得关

2.允许通过root登录桌面

目标机上:

nano /etc/gdm3/daemon.conf

在 [security] 下添加 AllowRoot=True,保存退出。

nano /etc/pam.d/gdm-password

把auth required pam_succeed_if.so user != root quiet_success这行注释掉。

保存退出,reboot一下机器,登录的时候就可以用root账户了。

3.安装编译环境

①检查一下sources.list,换一个靠谱点的镜像源

②apt upgrade一下。

③安装编译工具:

apt install cmake
apt install build-essential

④qt5的开发工具:

apt install qt5-qmake
apt install qtbase5-dev
apt install qtdeclarative5-dev
apt install qtwebengine5-dev
apt install qml-module-qt-labs-platform

其他qt模块可以在需要使用的时候按需安装:

qtconnectivity5-dev qtmobility-dev qttools5-dev tmultimedia5-dev libqt5opengl5-dev qtpositioning5-dev tscript5-dev libqt5sensors5-dev libqt5serialport5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev

qtcreator在目标机上不需要,不用安装。

⑤检查安装

qmake --version 检查一下qt版本:

处理器

二、VS+VisualGDB创建项目

①VS创建项目界面选择Linux Project Wizard:

处理器

②Project Type选择:

处理器

③连接目标机:

处理器

④接下来是源文件的存储方式,这里提供存储在开发用的电脑(Windows)和存储在目标机上两种选项:

处理器

VisualGDB推荐的方式是把文件存在目标机上,通过SSH取过来。但在开发GUI时会使用qtdesigner读取.ui文件,实际使用时很容易出现同步错误的情况,个人推荐还是本地存储,编译时再上传到目标机,配置方法:

处理器

注意:同步文件类型默认没有txt类型,需要手动加上。如果不加就会导致CMakelists.txt无法同步,导致报错。

⑤选择目标机上IncludeDir:

※目标机编译需包含的内容,也可以之后补充:

处理器

⑥完成项目创建

默认创建的项目是带ui的,不过可以比较方便地修改成console程序。

⑦运行结果:

处理器

三、项目高级设置/工具

可右键项目打开VisualGDB属性配置项目的高级选项,推荐探索熟悉一下。

在调试选项中:

处理器

可以看到默认Console输出是连接到开发电脑的,GUI也是通过X Window输出在开发电脑上(如果没有安装Xterm或XMing时VisualGDB会自动下载安装,很方便)。

但我们在开发一些系统的时候,比如说收银机,会更希望在目标机连接的屏幕上看到结果,在这里就可以修改选项。

注意:如果想在target上显示GUI,要确保此时桌面系统以root登陆,否则调试时会报错。

VisualGDB提供了SSH Console工具,可以快速建立SSH连接、传输文件:

处理器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分