开发环境:
- 主机:ubuntu18.04 LTS
- 目标板:imx6q
- 交叉工具链:poky-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.7
问题出现背景:
1. qtcreator的启动
imx6 qt开发环境的搭建,不用赘述,随便一搜都是。其中最后一步,打开qtcreator时,一般是执行一个qtcreator_start.sh(文件名随意)脚本打开,因为需要更改环境变量,通常我们在这个脚本中的内容是这样的:
#!/bin/bash source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi #更改交叉编译所需的环境变量 /home/linux/Qt5.14.2/Tools/QtCreator/bin/qtcreator.sh & #执行qtcreator安装路径下自带的启动脚本
2. 远程部署
配置远程部署时遇到一点儿小问题,以后会补上一篇记录下来,本文不赘述。网上相关资料也很多。远程部署大大方便了程序的交叉编译和调试,不再需要挂载、复制等操作。直接在主机上就可以运行、调试代码(本例中的程序名为vc200)。
为了能对程序的运行进行手动终止等输入操作,在“项目 -> Build & Run -> Run” 设置中,应勾选“Run in terminal”。
如果不勾选“run in terminal”,则程序只会在qt的“应用程序输出”窗口显示输出信息,无法手动输入交互(比如无法使用ctrl+c终止程序)。
问题描述:
基于上述背景,按道理,ctrl+r 运行程序后,会自动弹出一个终端,程序在该终端运行。然而,应用程序输出窗口显示已启动,但是就是死活不弹出终端……
问题分析:
在开启qtcreator的终端窗口发现,每次按ctrl+r运行时,终端有输出以下错误信息:
然后,如果在启动qtcreator的sh脚本里,注释掉
#source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
这一句,ctrl+r 就可以正常开启终端,没有报错信息。
好了,问题似乎了然,那肯定是更改了环境变量导致的。
接下来,去看下这个文件吧。
不是报 python error吗?那我找找和python相关的,只有一个地方,就是PYTHONHOME这个环境变量。
解决方案
通过上面分析可知,原因是交叉工具链修改了python相关的环境变量,导致python的调用位置发生变化,应该调用主机下的/usr/bin/python,而不是调用交叉工具链的。
解决方法很简单,注释掉这一行就行。
如果程序里不涉及python调用应该没影响。即使需要调用,也可以在程序中动态设置,参考下面文章:
解决PYTHONHOME这个环境变量带来的问题
………………
好了,终于不用在主机、目标板的多窗口之间来回切换了,告别挂载、复制等一些系列操作。
终!



