Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Zynq中为嵌入式Linux编译Qt图表_Qt_Qt5_Embedded Linux_Zynq_Qtcharts - Fatal编程技术网

无法在Zynq中为嵌入式Linux编译Qt图表

无法在Zynq中为嵌入式Linux编译Qt图表,qt,qt5,embedded-linux,zynq,qtcharts,Qt,Qt5,Embedded Linux,Zynq,Qtcharts,我有一个用Qt5.12.2编写的应用程序,它使用QCharts绘制一些信号。我希望这个应用程序在基于Zynq的板上运行,特别是在Xilinx的Zybo板上。但是,为Xilinx提供的信息仅涵盖Qt版本5.4:,尽管它编译正确,但并没有提供我需要的Qt图表模块 我尝试过使用与Xilinx链接中所示相同的选项进行编译,但是有几个模块无法编译。为了避免这个错误,我尝试跳过我无法编译的模块,直到我发现Qt图表也无法编译为止 Qt编译的最后一个配置是: ./configure -xplatform arm

我有一个用Qt5.12.2编写的应用程序,它使用QCharts绘制一些信号。我希望这个应用程序在基于Zynq的板上运行,特别是在Xilinx的Zybo板上。但是,为Xilinx提供的信息仅涵盖Qt版本5.4:,尽管它编译正确,但并没有提供我需要的Qt图表模块

我尝试过使用与Xilinx链接中所示相同的选项进行编译,但是有几个模块无法编译。为了避免这个错误,我尝试跳过我无法编译的模块,直到我发现Qt图表也无法编译为止

Qt编译的最后一个配置是:

./configure -xplatform arm-linux-gnueabihf-g++ \
    -opensource \
    -confirm-license \
    -nomake examples \
    -verbose -skip qtpurchasing -skip qtconnectivity -skip qtdeclarative -skip qtlocation -skip qtmultimedia -skip qtquickcontrols -skip qtsensors -skip qttools -skip qtwebsockets -skip qtwinextras -skip qtwebchannel -skip qtwebengine \
    -no-gif \
    -no-libjpeg \
    -no-mtdev \
    -no-sql-db2 \
    -no-sql-ibase \
    -no-sql-mysql \
    -no-xcb \
    -qt-freetype \
    -no-fontconfig \
    -no-harfbuzz \
    -no-xcb-xlib \
    -no-cups \
    -no-iconv \
    -no-icu \
    -no-eglfs -no-opengl\
    -no-openssl \
    -prefix $ZYNQ_QT_INSTALL
arm-linux-gnueabihf-g++ -Wl,-O1 -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN/../../lib -shared -o libqtchartsqml2.so .obj/chartsqml2_plugin.o .obj/declarativechart.o .obj/declarativexypoint.o .obj/declarativexyseries.o .obj/declarativelineseries.o .obj/declarativesplineseries.o .obj/declarativeareaseries.o .obj/declarativescatterseries.o .obj/declarativepieseries.o .obj/declarativebarseries.o .obj/declarativecategoryaxis.o .obj/declarativemargins.o .obj/declarativeaxes.o .obj/declarativepolarchart.o .obj/declarativeboxplotseries.o .obj/declarativechartnode.o .obj/declarativecandlestickseries.o  -L/home/luighi/Qt-crosscompiled/qt5/qtdeclarative/lib -lQt5Quick -L/home/luighi/Qt-crosscompiled/qt5/qtbase/lib -L/home/luighi/Qt-crosscompiled/qt5/qtcharts/lib -lQt5Charts -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lpthread    
/opt/Xilinx/SDK/2018.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/7.2.1/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lQt5Quick
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:140: ../../qml/QtCharts/libqtchartsqml2.so] Error 1
make[3]: Leaving directory '/home/luighi/Qt-crosscompiled/qt5/qtcharts/src/chartsqml2'
make[2]: *** [Makefile:91: sub-chartsqml2-make_first-ordered] Error 2
make[2]: Leaving directory '/home/luighi/Qt-crosscompiled/qt5/qtcharts/src'
make[1]: *** [Makefile:49: sub-src-make_first] Error 2
make[1]: Leaving directory '/home/luighi/Qt-crosscompiled/qt5/qtcharts'
make: *** [Makefile:493: module-qtcharts-make_first] Error 2
其中,
$ZYNQ\u QT\u INSTALL
在本例中设置为
/usr/local/QT-5.12.2/

编译中的最后一个错误是:

./configure -xplatform arm-linux-gnueabihf-g++ \
    -opensource \
    -confirm-license \
    -nomake examples \
    -verbose -skip qtpurchasing -skip qtconnectivity -skip qtdeclarative -skip qtlocation -skip qtmultimedia -skip qtquickcontrols -skip qtsensors -skip qttools -skip qtwebsockets -skip qtwinextras -skip qtwebchannel -skip qtwebengine \
    -no-gif \
    -no-libjpeg \
    -no-mtdev \
    -no-sql-db2 \
    -no-sql-ibase \
    -no-sql-mysql \
    -no-xcb \
    -qt-freetype \
    -no-fontconfig \
    -no-harfbuzz \
    -no-xcb-xlib \
    -no-cups \
    -no-iconv \
    -no-icu \
    -no-eglfs -no-opengl\
    -no-openssl \
    -prefix $ZYNQ_QT_INSTALL
arm-linux-gnueabihf-g++ -Wl,-O1 -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN/../../lib -shared -o libqtchartsqml2.so .obj/chartsqml2_plugin.o .obj/declarativechart.o .obj/declarativexypoint.o .obj/declarativexyseries.o .obj/declarativelineseries.o .obj/declarativesplineseries.o .obj/declarativeareaseries.o .obj/declarativescatterseries.o .obj/declarativepieseries.o .obj/declarativebarseries.o .obj/declarativecategoryaxis.o .obj/declarativemargins.o .obj/declarativeaxes.o .obj/declarativepolarchart.o .obj/declarativeboxplotseries.o .obj/declarativechartnode.o .obj/declarativecandlestickseries.o  -L/home/luighi/Qt-crosscompiled/qt5/qtdeclarative/lib -lQt5Quick -L/home/luighi/Qt-crosscompiled/qt5/qtbase/lib -L/home/luighi/Qt-crosscompiled/qt5/qtcharts/lib -lQt5Charts -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lpthread    
/opt/Xilinx/SDK/2018.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/7.2.1/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lQt5Quick
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:140: ../../qml/QtCharts/libqtchartsqml2.so] Error 1
make[3]: Leaving directory '/home/luighi/Qt-crosscompiled/qt5/qtcharts/src/chartsqml2'
make[2]: *** [Makefile:91: sub-chartsqml2-make_first-ordered] Error 2
make[2]: Leaving directory '/home/luighi/Qt-crosscompiled/qt5/qtcharts/src'
make[1]: *** [Makefile:49: sub-src-make_first] Error 2
make[1]: Leaving directory '/home/luighi/Qt-crosscompiled/qt5/qtcharts'
make: *** [Makefile:493: module-qtcharts-make_first] Error 2

我不知道如何正确地交叉编译这个版本。您能帮我解决这个问题吗?

我不推荐Xilinx在该文档中描述的方法。下面的过程适用于运行Linux的任何类型的目标


如果您愿意使用Yocto/OpenEmbedded Qt5,可以随附支持,最新的Xilinx版本v2018.3在其meta-Qt5层中支持Qt 5.9.6。在Yocto生成的Linux映像中包含像qtcharts这样的包很容易。meta-toolchain-qt5目标提供SDK,该SDK可与QtCreator一起用于为目标交叉编译应用程序。

我不推荐Xilinx在该文档中描述的方式。下面的过程适用于运行Linux的任何类型的目标


如果您愿意使用Yocto/OpenEmbedded Qt5,可以随附支持,最新的Xilinx版本v2018.3在其meta-Qt5层中支持Qt 5.9.6。在Yocto生成的Linux映像中包含像qtcharts这样的包很容易。meta-toolchain-qt5目标提供了SDK,可与QtCreator一起用于交叉编译目标的应用程序。

Qt图表的一部分实现了QML的代码,因此Qt图表的依赖关系必须是QtQuick,因此我认为您不应跳过Qt声明性模块这是一个有趣的点。然而,当我启用Qt声明时,我遇到了一些与
items/qquickclipnode\u p.h:57:30:error:comdat本地函数相关的编译错误,该函数在其comdat类Q\u QUICK\u PRIVATE\u EXPORT QQuickDefaultClipNode:public QSGClipNode
之外由void qquickwindowcubationcontroller::cubate()调用,这在Qt 5.12版本中发生,Qt5.9,显然,Qt5.11中也有,如Xilinx论坛中打开的一个线程所示:我正在查看QtCharts repo:,我发现它不应该产生问题。因此,我再次建议您只编译qtbase:在编译qtchart之后,请尝试编译qtchart。我按照您的建议,首先编译qtbase模块,没有任何错误。但是,当我尝试编译QtChart模块时,我得到了与第一次编译Qtdeclarative时相同的错误:
items/qquickclipnode\u p.h:57:30:error:comdat本地函数,由void qquickWindowCubationControl::Cubate()在其comdat类Q_QUICK\u PRIVATE\u EXPORT QQuickDefaultClipNode:public QSGClipNode
之外调用。显然,依赖于此项的任何模块都无法编译。好的,我建议您先选择正在使用的分支,然后编辑文件删除
qtHaveModule(quick){SUBDIRS+=chartsqml2}
,并删除可能导致问题的chartsqml2目录,然后编译项目,我认为Qt图表不会使用QML,Qt图表的一部分为QML实现代码,因此Qt图表的依赖关系必须是QtQuick,因此我认为您不应该跳过Qt声明性模块这是一个有趣的点。然而,当我启用Qt声明时,我遇到了一些与
items/qquickclipnode\u p.h:57:30:error:comdat本地函数相关的编译错误,该函数在其comdat类Q\u QUICK\u PRIVATE\u EXPORT QQuickDefaultClipNode:public QSGClipNode
之外由void qquickwindowcubationcontroller::cubate()调用,这在Qt 5.12版本中发生,Qt5.9,显然,Qt5.11中也有,如Xilinx论坛中打开的一个线程所示:我正在查看QtCharts repo:,我发现它不应该产生问题。因此,我再次建议您只编译qtbase:在编译qtchart之后,请尝试编译qtchart。我按照您的建议,首先编译qtbase模块,没有任何错误。但是,当我尝试编译QtChart模块时,我得到了与第一次编译Qtdeclarative时相同的错误:
items/qquickclipnode\u p.h:57:30:error:comdat本地函数,由void qquickWindowCubationControl::Cubate()在其comdat类Q_QUICK\u PRIVATE\u EXPORT QQuickDefaultClipNode:public QSGClipNode
之外调用。显然,依赖于此项的任何模块都无法编译。好的,我建议您先选择正在使用的分支,然后编辑文件删除
qtHaveModule(quick){SUBDIRS+=chartsqml2}
,并删除可能导致问题的chartsqml2目录,然后编译项目,我认为Qt图表不会使用qmlineresting!事实上,我遵循@eyllanesc指出的解决方法,实现了编译,牺牲了所有qtquick功能和相关模块。但是,当我试图在QtCreator中使用时,我无法编译我的应用程序。我想,这是因为为Xilinx提供的工具链(我使用的是2018.2)与文件系统中的库(Linaro Ubuntu12.11)不兼容。实际上,我不愿意使用过时的发行版,但是,这是预装桌面环境的最新版本。我从来没有证明过Yocto,我会复习的@LuighiAnthonyVitónZorrilla Yocto是最好的选择,因为它允许您自定义它,如果您不想要桌面,它非常轻且理想system@LuighiAnthonyVit我也检查了一下