linux - 简介 QT,QML 应用程序,在 Linux 系统上(达芬奇板)

标签 linux qt qml embedded davinci

晚上好 我继承了一个使用 QT creator(C++ 和 Qt Quick)制作的项目。 目标是带有 **Linux 内核 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 位)

我可以为目标构建和运行应用程序,并且可以看到它正在运行。

我需要启动探查器。但它不起作用。当我使用参数运行应用程序(在目标上)时:

qmljsdebugger=port:xxxx

然后应用程序不再启动!

我尝试将这些选项添加到项目的 .pro 文件中:

DEFINES   ''    +=  QMLJSDEBUGGER         
DEFINES   ''    +=  QT_DECLARATIVE_DEBUG   
PACKAGECONFIG_append = " qml-debug"

显然,我是在 Debug模式下构建的。

当我尝试在目标上运行应用程序时,我收到此消息:

QML debugging is enabled. Only use this in a safe environment. Process killed by signal

我再说一遍:如果选项“qmljsdebugger=port:xxxx”被删除,那么应用程序将启动并正常工作..但在这种情况下分析器当然不会连接。

正如我所说,我继承了这个项目,但我对这个环境完全陌生。

有什么帮助或建议吗?

更新

现在这些是我添加到 .pro 文件中的行

DEFINES   ''    +=  QMLJSDEBUGGER
DEFINES   ''    +=  QT_QML_DEBUG
CONFIG          +=  qml_debug

我检查了 QT 的各种路径并导出了 PATHLD_LIBRARY_PATH。 不幸的是没有任何改变: 如果我使用以下方式启动我的程序:

  /opt/MyPrefix/MyProgram -platform eglfs 

然后就可以了。

如果我使用:

   /opt/MyPrefix/MyProgram -qmljsdebugger=port:3456 -platform eglfs 

然后它崩溃了

QML debugging is enabled. Only use this in a safe environment. Segmentation fault

程序似乎以 Debug模式启动,这没问题。问题是探查器:(

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 项目(如矩形或按钮)ans看看问题是否仍然存在。

关于linux - 简介 QT,QML 应用程序,在 Linux 系统上(达芬奇板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934486/

相关文章:

c++ - 如何在 VS 2013 中使用 QT 4.8.x?

flash - Qt/webkit 和 flash

java - Netbeans 8.2 无法启动

linux - 通过 aws cli 从 codecommit 存储库中提取带有扩展名的文件名

linux - Ubuntu 服务器上的 Bash : find: missing argument to `-exec'

linux - 从变量中删除空格

javascript - QtQuick2 - 自定义消息框

qt - Qml 计时器未在正确的时间间隔内触发

c++ - Qml Grid、Column 和 RowLayout 不适用于 LayoutMirroring

c++ - C++与QML之间的通信