linux - 在 Linux 系统(达芬奇板)上配置 QT、QML 应用程序
问题描述
晚上好,我继承了一个使用QT creator(C++ 和 Qt Quick)制作的项目。目标是带有 **Linux kernel 2.6.37 ** 的DaVinci DM8168板。
特别是我使用 Qt Creator 4.2.0 (4.2.0) 基于Qt 5.7.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 bit)
我可以为目标构建和运行应用程序,并且可以看到它正在运行。
我需要启动分析器。但它不起作用。当我使用参数运行应用程序(在目标上)时:
qmljsdebugger=port:xxxx
然后应用程序不再启动!
我尝试将这些选项添加到项目的 .pro 文件中:
DEFINES '' += QMLJSDEBUGGER
DEFINES '' += QT_DECLARATIVE_DEBUG
PACKAGECONFIG_append = " qml-debug"
显然,我是在调试模式下构建的。
当我尝试在目标上运行应用程序时,我收到以下消息:
QML 调试已启用。仅在安全的环境中使用。进程被信号杀死
我再说一遍:如果选项“qmljsdebugger=port:xxxx”被删除,那么应用程序将启动并正常工作..但当然在这种情况下分析器不会连接。
正如我所说,我继承了该项目,并且对这个环境完全陌生。
有什么帮助或建议吗?
更新
这些现在是我添加到 .pro 文件中的行
DEFINES '' += QMLJSDEBUGGER
DEFINES '' += QT_QML_DEBUG
CONFIG += qml_debug
我检查了 QT 的各种路径并导出PATH
和LD_LIBRARY_PATH
. 不幸的是,没有任何改变:如果我使用以下方式启动我的程序:
/opt/MyPrefix/MyProgram -platform eglfs
然后它工作。
如果我使用:
/opt/MyPrefix/MyProgram -qmljsdebugger=port:3456 -platform eglfs
然后它崩溃了
QML 调试已启用。仅在安全的环境中使用。分段故障
该程序似乎以调试模式启动,这没关系。问题是探查器:(
ps:据我所知,目标上没有运行防火墙。我一定会检查得更好。
更新 2
我尝试了与上述相同的解决方案,但在一个简单的程序上尝试了建议(基本上是“hello world”),并且在指定“-qmljsdebugger=port:3456”选项时它不会崩溃......我真的不知道是什么问题出在我原来的应用程序中。
解决方案
首先,让 qml 调试运行有一些先决条件,例如确保 Qt 是使用与二进制文件完全相同的工具链构建的。你应该看看 Qt Wiki:https ://wiki.qt.io/How_To_Profile_QML_App_on_Embedded_Device
一个重要的注意事项是,在 Qt Quick 1 和 Qt Quick 2 之间,您进行 qml 调试的方式发生了变化。当您使用 Qt 5 时,我相信您应该使用 Qt Quick 2。所以这意味着您不应该使用QT_DECLARATIVE_DEBUG
,而是使用QT_QML_DEBUG
.
更多细节:https ://doc.qt.io/qt-5/qtquick-debugging.html#qml-debugging-infrastructure
如果在使用正确的 DEFINES 并确保满足所有先决条件后仍然有问题,那么您应该尝试使用什么都不做的基本 Qt 程序,但显示一个简单的 QML 项目(如矩形或按钮)并查看您是否仍然有问题。
推荐阅读
- ruby-on-rails - 如何将复制按钮集成到使用 cocoon gem 创建的表单中
- python - 将垂直 .txt 文件转换为字典,无需任何库,只需 python 基本功能
- python - 如何遍历文件夹的所有文件并将文件保存为数据框格式及其文件名?
- javascript - 点击DIV的背景需要改变
- python - 尝试覆盖键时引发异常的python字典
- python-3.x - 字符串列表到单词列表
- git - 为什么在我将 svn 存储库转换为 git 存储库后 git describe 总是返回“致命:没有标签可以描述 SHA1”?
- activemq-artemis - 如何将 broker-url 与其参数分开(ActiveMQ Artemis + Spring Boot)
- java - 如何使 System.out.println 仅收集带有子 p 标签的链接?
- apache-kafka - 如何使用状态机通过 MassTransit 将消费者连接到 Kafka 主题