板子已经打开sshd服务了,pc上终端可以通过ssh登陆板子了。
qtcreator打开选项-设备,选择remote linux设备,输入ip地址相关,旁边有个按钮,可以打开shell登陆板子。说明这部分没问题。
但是kid设置后,工程里,选择run,结果总是报错。
/xxx/AllWinner/t113s3/qt-everywhere-opensource-src-5.12.9/t113-qt/mkspecs/features/toolchain.prf:76: error: Variable QMAKE_CXX.COMPILER_MACROS is not defined.
:-1: error: Project ERROR: failed to parse default search paths from compiler output
/XXX/Qt5/t113-s3/modbusmaster/master.pro:-1: error: 分析文件/XXX/Qt5/t113-s3/modbusmaster/master.pro时发生错误,放弃中。
最近编辑记录 Gentlepig (2023-08-11 17:44:07)
离线
编译器是MSVC吧?换用GCC编译器,Windows版的叫MinGW
PS:现在的新手在提问时老是只给出少得可怜的相关信息,别人看了也懒得追问,于是没人鸟。
感谢回复。
PC环境是ubuntu22.04, gcc11。
之所以想用qtcreator+ssh调试板子上运行的程序,是因为编译的程序在板子上运行后卡死,通过adb shell进入后top发现,该程序进程CPU占用率50%,另50%是adb shell占用。
Q群里请教了调试方法,有网友指明可以qtcreator+ssh调试,可以打断点。
离线
现在先用的是qt的一个例程,modbus master例程。如果kit套件里,不选择为远程linux设备,而选择本地编译,仍选择交叉编译的gcc,则可以生成可执行文件,拷贝到arm上可以运行。
kit套件里,设置为远程linux设备,则应该是无法正常打开工程,左侧工程列表里只有pro文件,而看不到头文件、源文件等。
-----------------------------------------
arm板子启动sshd时有这个警告:
/sshd start
root@TinaLinux:/etc/init.d# /etc/rc.common: line 128: procd_add_mdns: not found
不过pc上用ssh可以登陆这个板子。
----------------------------------------
qtcreator里设备这里点击测试,有如下:
Sending echo to device...
Device replied to echo with expected contents.
Checking kernel version...
Linux 5.4.61 armv7l
检查指定端口是否可用...
所有指定的端口都可用。
Checking whether "sftp" works...
"sftp" failed with exit code 255:
Connection closed.
Connection closed
Checking whether "rsync" works...
"rsync" failed with exit code 127: ash: rsync: not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: remote command not found (code 127) at io.c(231) [Receiver=3.2.7]
Deployment to this device will not work out of the box.
设备测试失败。
虽然有stfp和rsync报错,但是没打算用这两个。
show running process也可以显示板子上运行的进程。
open remote shell也可以打开终端并链接。
-------------------------------------------------------
板子上没装gdb server,pc上也没有交叉编译的gdb。正在装。
-------------------------------------------------------
tina sdk里勾选了gdb和gdb server,编译后也生成了对应的程序。不过不知道怎么用,现在qt creator还是提示原来的错误。
-------------------------------------------------------
其实板子上只用gdb server就行了。我之前以为pc上需要用到交叉编译的gdb,其实是不行的,得用pc版的gdb。我尝试用ubuntu自带的gdb,结果版本太高,链接后,出现了个too long的错误。在pc上重新源码编译gdb,让gdb和gdbserver用的是同一份源码,就没那个问题了。
arm板上:gdbserver :1234 ./test
pc端:arm-linux-gdb ./test 注意这个arm-linux-gdb只是个名字,并不表示这是交叉编译出来的gdb。
然后gdb命令行中,target remote 192.168.1.xxx:1234
开始执行程序后,按c是直接运行程序了。其他还在研究。
而帖子里一开始的报错,和gdb貌似无关。现在还没解决。
最近编辑记录 Gentlepig (2023-08-14 17:17:51)
离线
kit构建套件里,设备类型选为 remote linux device的话,如果编译器这里选交叉编译器,则pro文件就不能正常打开,出现qmake_cxx找不到compile_macros定义。
但是,保持设备类型不变,改为pc上用的gcc和gc++,则就能正常打开工程。
于是怀疑是交叉编译器的问题,就又建立个kit,设备类型选为 桌面,仍用交叉编译器,结果pro文件可以正常打开,可以构建生成可执行文件。
------------------------------------------------------------
run选项里有个build device,这里应该选local pc,我之前选的是remote linux devce。改了这里后就没那三个报错了。
我看的是原子的教程,到这里后,该通过ssh和scp命令往板子里拷贝程序,是在qtcreator里的自定义的部署命令里实现的:
ssh -p %{Device:SshPort} %{Device:UserName}@%{Device:H
ostAddress} 'mkdir -p %{CurrentRun:Executable:Path}'
可是qtcreator里没有CurrentRun这个参数,所以又卡到这里了。
------------------------------------------------------------
记录以下qtcreator使用gdb遇到的问题,pc上的gdb和板子上的gdbserver是用同一份原文件编译出来的。结果qtcreator里按f10进入单步调试,提示gdb不支持python脚本。网上搜了说编译时要加--with-python,结果编译时报错,make distclean后,又删了gdb/cache啥的,报错改变了,找不到python,我板子上python默认时python2,改为指向python3后,报错又变了,提示有些python库快要遗弃了,然后又报错找不到python。继续搜,说要安装python-dev。现在用的是python3.10,就安装了python3.10-dev。通过编译了。然后make install。
但是qtcreator里无论用f5还是f10,貌似都不在设置的断点地方停下来...
最近编辑记录 Gentlepig (2023-08-15 17:42:45)
离线
想改为rsync方式,结果下载rsync源码下来,configure --host=arm-linux CC=XXX,结果有4个库文件及头文件找不到,ssl,lbmz4等。也不知道该怎么指定,暂时放弃rsync方式。
尝试板子运行gdbserver,pc运行gdb,然后target remote=xxx,可以运行及调试,就是不知道如何设置断点。可以break main,在main函数处设置了断点,但是想在main.cpp其他行设置断点,break main.cpp:43,结果报错,找不到main.cpp。
qtcrator可以通过remote方式连上板子运行程序,就是设置的断点无法停止。
离线