前言:
今天咱们对“qt程序不能运行”可能比较注意,朋友们都需要分析一些“qt程序不能运行”的相关资讯。那么小编同时在网摘上搜集了一些对于“qt程序不能运行””的相关内容,希望大家能喜欢,我们一起来学习一下吧!在Linux程序中,如果需要控制硬件,大部分需要root权限,比如访问串口程序,否则提示 permission denied.解决办法之一就用root用户去运行。
如果想在Qt Creator 直接运行root权限程序,有一种方法是用sudo 打开Qt Creator,但这种方法会让Qt Creator 写入root权限才能访问的文件,这样会让后续正常开发大受干扰,这种方法不可取。
但如果想运程运行root权限的程序,必须在Qt Creator远程用户 配置成root用户,其中步骤有很多细节,下面介绍一下。
配置远程root用户
首先ARM开发板必须支持root远程登录,在开发板编辑
sudo vim /etc/ssd/ssd_config
把其中如下一句去掉注释生效
PermitRootLogin yes
保存后重启sshd服务即可,即可用root登录
sudo service sshd restart
但是在Qt Creator用root登录是不准用密码,只能用密钥文件登录,因上要在开发上位机上生成不对称密匙文件用于登录,常规做法用是 ssh-keygen -t rsa生成,但是在QtCreator 配置窗设备一栏中,有一个生成新密钥的按钮,用这个
Qt Creator会在~/.ssh 生成名为 qtc_id和 qtc_id.pub的密钥对,
其中的公钥重命名
cd ~/.ssh
cat qtc_id.pub >> authorized_keys
#把authorized_keys文件上传到ARM开发板上的/root/.ssh 目录下,重启开发板
scp authorized_keys root@192.168.0.113:/root/.ssh
可以点击设备配置窗口的test按钮,如果显示测试成功表示整个环境正常工作
在对应的kits下直接点击绿色三角运行即可,实测可以访问串口,并且远程运行结果可以显示在应用程序输入页,非常方便,相当于把编译,上传,运行三步一键执行。
配置运程调试
远程调试要上一步基础上做更多的设置。
首先ARM开发板上安装 gdbserver,在其终端执行
sudo apt-get install gdbserver
另开在开发上位机中,不能直接用gdb调试,否则会提示
while parsing target description (at line 10): Target description specified unknown architecture "arm"
必要使用多target版本 gdb-multiarch版本
sudo apt-get install gdb-multiarch
在Qt Creator 中的调试器栏增加对gdb-multiarch的配置
在对应的kits中使用这个调试器
这样就可以点击调试按键进行调试了,其中的File transfers from remote targets can be slow.只是较慢
02:05:54: Checking available ports...
02:05:54: Found 101 free ports.
02:05:54: Starting /usr/bin/gdbserver --multi :10000...
02:05:54: Debugging starts
Listening on port 10000
Remote debugging from host 192.168.0.114
Process /opt/dmaService/bin/dmaService created; pid = 30202
File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Initializing probes-based dynamic linker interface failed.
Reverting to original interface.
在界面上设置断点,还是能直接在断点停下,并且能单独执行。
至此,整个远程环境搭建完毕,Enjoy it!.
标签: #qt程序不能运行