虚拟机Ubuntu远程调试ARM开发板中的QT程序

注意:虚拟机安装、镜像选择以及在虚拟机中安装软件,避免使用含有中文的目录。

一、虚拟机Ubuntu安装

先在Windows10/11上安装虚拟机(我使用的是VirtualBox),新建虚拟机并安装Ubuntu镜像。可参考网址:

https://www.cnblogs.com/zenor0/p/15811793.html

二、虚拟机Ubuntu中安装Qt-5.12.8

在虚拟机Ubuntu中安装Qt-5.12.8,直接选择安装包安装即可。可参考网址:https://blog.csdn.net/weixin_39466327/article/details/127647237

三、虚拟机Ubuntu中安装交叉编译工具链

在虚拟机Ubuntu中安装交叉编译工具链,版本可以选择RK3568对应的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu,也可以在ARM官网上下载最新的10.3版本,参考网址:

Downloads | GNU-A Downloads – Arm Developer

下载以后,将解压后的文件夹重命名为简单好识别的名称(也可不重命名),并放在/opt/文件夹下(我的是/opt/aarch64-none-linux-gnu-10.3),并将交叉编译链添加到环境变量中,可编辑/etc/profile,在最后一行增加

export PATH=$PATH:/opt/aarch64-none-linux-gnu-10.3/bin

然后执行 source /etc/profile生效,然后重启开发板,在终端中输入which aarch64-none-linux-gnu-gcc,看是否有路径输出,有则正常。

注意:不要使用mv指令进行如下操作,否则/opt/aarch64-none-linux-gnu-10.3/bin下的文件所有权都是当前用户,而不是root账户,导致source /etc/profile后,也不生效。

sudo mv /**/**/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu /opt/aarch64-none-linux-gnu-10.3

可参考网址:

https://blog.csdn.net/limuyuanrs/article/details/135174144

四、虚拟机Ubuntu中交叉编译安装Qt

1. 下载Qt-5.12.8源码,解压后得到qt-everywhere-src-5.12.8文件夹,在该文件夹所在目录中新建两个文件夹Qt-5.12.8-build和Qt-5.12.8-aarch64,其中Qt-5.12.8-build是用来存放生成的Make file文件和编译过程中产生的中间文件,Qt-5.12.8-aarch64用于存放用交叉编译器编译Qt后生成的库,这些库是用在开发板中的,但是如果开发板中已经自带了QT库,就不要把这些库再拷贝到开发板中了,容易造成冲突。

2. 进入到Qt源码目录中修改配置文件,具体路径为/home/zuanshigan/needs/qt-everywhere-src-5.12.8/qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf,将该文件中的编译器的路径均改为绝对路径,即步骤3所述的/opt/aarch64-none-linux-gnu-10.3/bin,改完后为

注意:一定要确保此文件中的编译器名称要与/opt/aarch64-none-linux-gnu-10.3/bin下的一致,否则会提示错误“找不到gcc或g++编译器”。

3. 接下来将进行Qt源码的编译配置过程,即生成Makefile文件。切换到Qt-5.12.8-build文件夹中,打开终端,执行指令如下:

./../qt-everywhere-src-5.12.8/configure -v -prefix /home/zuanshigan/needs/Qt-5.12.8-aarch64 -opensource -confirm-license -release -xplatform linux-aarch64-gnu-g++ -no-opengl -skip qtlocation

为方便后续编译出错,重新执行配置指令,可将上述指令存放在autoconfigure.sh文件中,并将该文件放在Qt-5.12.8-build文件夹中,如图所示。然后执行./autoconfigure.sh文件。(确保autoconfigure.sh文件可执行)

4. 执行配置指令后,如果没有问题,则会有相应提示,且在Qt-5.12.8-build文件夹中会生成Makefile文件。然后执行指令time (make -j 8)进行Qt源码编译。其中,time用于记录编译用时,-j后面的8是指用8个线程同时进行编译。一般是虚拟机设置的处理器个数的2倍。

编译时间会稍长,视机器性能而定,一般是在10分钟左右。编译没有问题后,执行make install进行Qt安装,安装完后qmake以及库文件都在Qt-5.12.8-aarch64文件夹中了。可进入到该文件夹中,并执行指令readelf -h libQt5DBus.so,看下该文件的系统架构是否为aarch64,如果为aarch64,说明交叉编译安装Qt成功。

如果make install的时候,提示“python not found”,说明虚拟机中没有python,可通过which python查找是否存在,如果不存在,则安装即可;如果存在,但是不是python,是python3或其他,则复制一份并重命名为python即可,如图所示。

可参考网址:

https://blog.csdn.net/limuyuanrs/article/details/135174144

五、虚拟机Ubuntu中配置Qt Creator

配置qtcreator的交叉编译套件。打开qtcreator,点击工具-选项,选择套件/Kits,选择编译器/Compiler,一般会自动识别出交叉编译器中的gcc和g++编译器;选择Qt Versions,手动添加,qmake路径选择步骤7生成的qmake文件,如图所示;选择构建套件Kit,手动添加,名称自定义,Compiler选择刚才配置的gcc和g++编译器,Qt version选择刚配置的Qt版本,如图所示。

六、配置远程调试

1. 首先,将虚拟机的网络配置为桥接模式,这样虚拟机的IP和主机IP就可以在一个网段内,同时设置开发板与主机同一个网段,关闭主机防火墙(否则开发板无法ping通主机和虚拟机),确保三者可以两两互ping通。

2. 实现文件远程传输。采用NFS传输方式,在虚拟机Ubuntu中安装NFS服务器,执行sudo apt install nfs-kernel-server rpcbind;然后在主目录下创建要挂载的文件夹,我的是/home/xinyu/nfs_rootfs;在/etc/exports文件的最后一行,增加

/home/xinyu/nfs_rootfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

目的是将文件夹挂载。然后重启服务,

sudo /etc/init.d/nfs-kernel-server restart

通过ps -A | grep nfs,可查看服务是否在运行。通过showmount -e,可查看挂载文件目录。

在开发板上安装NFS客户端,执行

sudo apt install nfs-common

在开发板上执行showmount -e NFS服务器IP,可查看虚拟机中挂载的文件目录。编辑/etc/profile文件,在最后一行增加

mount -t nfs -o nolock NFS服务器IP:/home/book/nfs_rootfs /mnt/nfs_rootfs

然后执行source /etc/profile 使其生效,关闭当前终端窗口。在虚拟机的/home/book/nfs_rootfs目录下增加任何文件;在开发板中,打开一个新的终端窗口,cd到/mnt/ nfs_rootfs文件夹下查看是否显示了新增的文件,如果有,则nfs配置成功。

可参考网址:

https://blog.csdn.net/NRWHF/article/details/130979523

3. 配置GDB调试环境,虚拟机中安装gdb-multiarch调试工具,开发板中安装并运行gdbserver。开发板中执行如下命令可以判断是否已安装。

gdbserver -–version

可参考网址:

https://blog.csdn.net/fanxinliuchen/article/details/126885473

4. 配置Qtcreator的远程调试。打开qtcreator,选择Device/设备,手动添加,名称自定义,设置远程设备的验证类型为Default,主机IP、SSH端口、用户名,然后点击Test,输入开发板中用户名对应的密码,测试成功证明设备连接没有问题,如图所示。

选择套件/Kits,选择Debuggers,手动添加步骤12中安装gdb-multiarch(可通过which gdb-multiarch获取路径);选择构建套件/kit,选中步骤8中创建aarch64 Qt套件,设置Debugger为刚才添加的gdb调试器,Device选择刚才创建的device,如图所示。

5. 远程调试。新建Qt HelloWorld项目,然后编译,为方便将编译后的可执行文件放置到NFS目录中,可在qtcreator的项目-Build中添加自定义步骤,如图所示。

点击编译,生成的可执行文件就会自动放置在NFS目录中,开发板中可以直接看到。在开发板中,切换至挂载NFS目录中,即/mnt/nfs_rootfs,执行

gdbserver 主机IP:1234 ./HelloWorld

在虚拟机的qtcreator中,点击调试- Attach to running debug server,设置好服务器端口为1234,Local executable/本地文件为交叉编译生成的可执行文件,点击OK即可进行断点调试。这种远程调试会需要十几二十秒的加载启动时间,没有本地调试那么快,所有的Print/qDebug输出在QT Creator是不可见的,需要在连接到开发板的终端界面中查看。

6. 远程运行。因为要运行在ARM开发板上,因为当点击qtcreator中的运行按钮时,项目会在开发板中的某个目录下生成可执行文件,默认的目录是 target.path = /opt/$${TARGET}/bin,但是此目录的创建是需要权限的,在运行的会提示

Failed to create remote directories: mkdir: cannot create directory ‘/opt/HelloWorld’: Permission denied

解决办法是在.pro文件中,将target.path改为 target.path = /home/firefly/$${TARGET}/bin,其中/home/firefly是开发板中当前用户名的主目录。然后再点击运行按钮即可。

  • 37
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用VS Code进行远程调试ARM开发板,首先需要确保本机已经安装了VS Code。然后,需要安装Remote Development插件。安装完成后,按照以下步骤进行配置和调试: 1. 配置开发板:确认你的ARM开发板已经配置好编译工具链和GDB服务器。 2. 连接远程主机:使用VS Code的Remote Development插件连接到远程主机。 3. 安装gdb:在远程主机上安装GDB调试器。 4. 配置VS Code:在本地机器上配置VS Code以与远程主机进行调试通信。 具体步骤如下: 1. 确保你的ARM开发板已经配置好编译工具链和GDB服务器。这样,你就可以在开发板上运行gdbserver命令,将开发板与本地机器建立调试连接。 2. 使用VS Code的插件市场安装Remote Development插件。 3. 打开VS Code并点击左侧的远程开发图标(类似于飞船的图标)。在弹出的菜单选择"Remote-SSH: Connect to Host"。然后,在输入框输入你的远程主机地址和凭据。 4. 连接到远程主机后,打开VS Code的终端,运行以下命令来安装gdb: ``` sudo apt-get install gdb ``` 5. 在VS Code的终端,输入以下命令来启动gdbserver并与ARM开发板建立调试连接: ``` gdbserver 192.168.0.102:1234 ./your_program ``` 其,192.168.0.102是你的远程主机的IP地址,1234是你指定的端口号,your_program是你要调试程序的路径。 6. 在本地机器上,打开VS Code的左侧侧边栏并选择调试视图(类似于虫子的图标)。点击配置按钮,在弹出的菜单选择"Add Configuration"。 7. 在弹出的配置文件,选择"Cpp Debug"作为调试器,并将其配置如下: ``` "configurations": [ { "name": "(gdb) Attach to remote", "type": "cppdbg", "request": "attach", "remoteMachine": "192.168.0.102", "remoteWorkspaceRoot": "/path/to/your/workspace", "remoteCwd": "/path/to/your/program", "program": "/path/to/your/program", "targetArchitecture": "arm", "gdbpath": "gdb" } ] ``` 请将"remoteMachine"、"remoteWorkspaceRoot"、"remoteCwd"、"program"和"gdbpath"字段替换为你的实际值。 8. 保存配置文件并退出。现在,你可以在VS Code点击调试按钮来启动远程调试会话。 9. 在调试会话,你可以设置断点、单步执行和观察变量值,就像在本地机器上调试一样。 总结一下,要在VS Code进行远程调试ARM开发板,需要安装Remote Development插件、配置本地机器和远程主机的连接,并使用gdbserver建立调试连接。然后,在VS Code配置调试器并启动调试会话。这样,你就可以像在本地机器上一样调试ARM开发板上的程序了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [VSCode 搭建 Arm 远程调试环境的步骤详解](https://download.csdn.net/download/weixin_38618094/13739897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用vscode远程调试arm-linux开发板](https://blog.csdn.net/weixin_45829566/article/details/108925998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值