• 19653阅读
  • 13回复

[讨论]Qt5.5.1移植到imx6(需要用到opengl es) [复制链接]

上一主题 下一主题
离线兵317
 

只看楼主 倒序阅读 楼主  发表于: 2016-12-29
如题,现需要利用Qt5.5新加的Qt3D功能,所以要运行在eglfs显示平台(利用硬件平台的gpu),所以移植了5.5.1,可是平台插件libqeglfs.so是生成出来了,但是大小只有几kb,放到开发板上运行界面程序,会报This application failed to start because it could not find or load the Qt platform plugin "eglfs".错误,下面我列出我的编译器版本及qt里面的配置文件内容:
一、环境

HOST:ubuntu14.04-LTS

Embedded:freescale imx6 linux-3.0.35

CROSS_COMPILE:freescale提供的gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-

二、源码配置文件
1.auto_config.sh
#!/bin/sh
./configure \
    -v -prefix /opt/qt-5.5.1/qte-arm \
    -opensource -confirm-license \
    -qt-sql-sqlite \
    -qt-libpng \
    -qt-libjpeg \
    -qt-freetype \
    -qt-pcre \
    -qt-zlib \
    -make examples \
    -dbus \
    -no-iconv \
    -make libs \
    -device imx6 \
    -no-xcb \
    -no-directfb \
    -no-kms \
    -eglfs \
    -qpa eglfs \
    -opengl es2 \
    -openvg \
    -release \
    -device-option \
    CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-

2.../qtbase/mkspec/devices/linux-imx6-g++/qmake.conf
include(../common/linux_device_pre.conf)

#EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_imx6.cpp
#QT_QPA_DEFAULT_PLATFORM = eglfs #eglfs    #显示使用linuxfb或eglfs

#QMAKE_INCDIR           += $$[QT_SYSROOT]/usr/include
#QMAKE_LIBDIR           += $$[QT_SYSROOT]/usr/lib

QMAKE_LIBS_EGL         += -lEGL -lGAL
QMAKE_LIBS_OPENGL_ES2  += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG      += -lOpenVG -lEGL -lGAL
QMAKE_INCDIR_OPENVG = /opt/qt-5.5.1/wexlib/usr/include
QMAKE_LIBDIR_OPENVG = /opt/qt-5.5.1/wexlib/usr/lib


#QMAKE_LFLAGS           += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib

IMX6_CFLAGS             = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS           += $$IMX6_CFLAGS
QMAKE_CXXFLAGS         += $$IMX6_CFLAGS

QMAKE_INCDIR_OPENGL_ES2 = /opt/qt-5.5.1/wexlib/usr/include
QMAKE_LIBDIR_OPENGL_ES2 = /opt/qt-5.5.1/wexlib/usr/lib
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL -lVDK -lGAL
QMAKE_INCDIR_EGL = /opt/qt-5.5.1/wexlib/usr/include
QMAKE_LIBDIR_EGL = /opt/qt-5.5.1/wexlib/usr/lib

#arm-linux-gnueabihf
#DISTRO_OPTS += hard-float

# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_viv

include(../common/linux_arm_device_post.conf)

load(qt_config)

以上就是两个配置文件的内容了,交叉编译出来的显示平台插件就是不能用,希望有过经验或了解的朋友指点一二啊,在此先谢了。
离线兵317

只看该作者 1楼 发表于: 2016-12-29
网上搜索到的Qt-5.x(x>=5)几乎都是用的linuxfb平台,去掉了eglfs,难道Qt5.5后eglfs就不能在嵌入式设备上使用了?
离线兵317

只看该作者 2楼 发表于: 2016-12-29
运行完auto_config.sh后如果顺利会生成Makefile,同时shell终端会显示出你设置的一些东西的yes或no,其中关于eglfs的有两个,一个是eglfs另一个是eglfs-imx6,如果配置了eglfs为no,eglfs-imx6为yes,对应的安装目录plugins/platforms/下不会生成libqeglfs.so,只有eglfs为yes了才会生成那个插件,这个eglfs-imx6选项好像是跟上面vedio有关的,不大清楚。
离线shf1986

只看该作者 3楼 发表于: 2017-01-10
需要指定gpu的库,可以通过用-sysroot指定,网上参考一下别人的方法......
QQ:173409750
Atmel SAMA5D3x(QQ群:476153000)
TI AM335x(QQ群:275644633)
Qualcomm/NXP/Freescale iMX6(QQ群:47768065)
嵌入式Qt、MySQL(QQ群:437438881)
离线兵317

只看该作者 4楼 发表于: 2017-01-22
回 shf1986 的帖子
shf1986:需要指定gpu的库,可以通过用-sysroot指定,网上参考一下别人的方法...... (2017-01-10 14:30) 

谢谢你的回复,gpu的库都一直指定了,在qmake.conf配置文件中。至于-sysroot选项,其实可以不用加的也可以,在移植5.4的时候就没加,照样用的好好的。目前libqeglfs.so还是六七kb大小,但是能用,后面也移植了5.6和5.7(该版本交叉编译工具链至少4.7),都能用,只是一当程序中QWindow和QWidget都存在时,插件会报错:This plugin does not support setParent!
EGLFS: OpenGL windows cannot be mixed with others.
Aborted。
离线kh99827765

只看该作者 5楼 发表于: 2017-02-07
目前在用Qt5.5,用在tq335x上,一直跑的没有问题,步骤看似和你的差不多
离线shf1986

只看该作者 6楼 发表于: 2017-02-10
回 兵317 的帖子
兵317:谢谢你的回复,gpu的库都一直指定了,在qmake.conf配置文件中。至于-sysroot选项,其实可以不用加的也可以,在移植5.4的时候就没加,照样用的好好的。目前libqeglfs.so还是六七kb大小,但是能用,后面也移植了5.6和5.7(该版本交叉编译工具链至少4.7),都能用,只是一当程序中QW .. (2017-01-22 10:24) 

http://bbs.21ic.com/icview-1653358-1-1.html
这是我之前两个平台对比的结果,并没有很详细的去使用,借助qt中自带的例子进行的比较......
QQ:173409750
Atmel SAMA5D3x(QQ群:476153000)
TI AM335x(QQ群:275644633)
Qualcomm/NXP/Freescale iMX6(QQ群:47768065)
嵌入式Qt、MySQL(QQ群:437438881)
离线flyleier

只看该作者 7楼 发表于: 2017-03-23
兄弟,你的解决了吗?我的平台和开发环境和你一样一样的,我移植的是Qt5.6,也移植成功了,Qt程序启动好慢,基本10秒才能启动起来,Qt4.8  1秒就启动了,5.6启动这么慢,压根就不能用啊,你的启动慢吗?
坚持下去,就是最好的选择!
离线smaller

只看该作者 8楼 发表于: 2017-03-26
没有这么编译过,你可以看下根文件系统 profile的位置是否添加 Qt platform plugin "eglfs"  这个可以看下 ./configure --help 中相关的帮助文档。
离线兵317

只看该作者 9楼 发表于: 2017-03-27
回 flyleier 的帖子
flyleier:兄弟,你的解决了吗?我的平台和开发环境和你一样一样的,我移植的是Qt5.6,也移植成功了,Qt程序启动好慢,基本10秒才能启动起来,Qt4.8  1秒就启动了,5.6启动这么慢,压根就不能用啊,你的启动慢吗? (2017-03-23 08:59) 

我的六七秒左右,包括系统uboot和内核的时间,现在这么长时间也是不满足要求的,准备新换5.8的使用了,据称该版本启动时间少,动刀的地方较多,你可以试试。
离线兵317

只看该作者 10楼 发表于: 2017-03-27
回 smaller 的帖子
smaller:没有这么编译过,你可以看下根文件系统 profile的位置是否添加 Qt platform plugin "eglfs"  这个可以看下 ./configure --help 中相关的帮助文档。 (2017-03-26 18:30) 

谢谢,问题在发帖之后的不长时间内解决了,主要还是配置的问题,合适了就一遍过,不合适各种错误。
离线flyleier

只看该作者 11楼 发表于: 2017-04-12
回 兵317 的帖子
兵317:我的六七秒左右,包括系统uboot和内核的时间,现在这么长时间也是不满足要求的,准备新换5.8的使用了,据称该版本启动时间少,动刀的地方较多,你可以试试。 (2017-03-27 17:51) 

你的GPU库,是官方文件系统自带的,还是自己移植的?我的是官方文件系统中自带的,但是不支持eglfs,只能选择linuxfb,移植成功后,启动超慢,我的内核版本,编译器和你的是一样的,能不能把你的GPU库,发给我一份,1094920472@qq.com,谢谢了。

顺便再问一下,4.6.2这个编译器无法编译QT5.7或者5.8.必须用高版本的编译器,高版本编译的qt库能在4.6.2编译器下编译的内核和文件系统中使用吗?要重新移植内核和文件系统吗?
坚持下去,就是最好的选择!
离线mylove2013

只看该作者 12楼 发表于: 2018-12-27
回 兵317 的帖子
兵317:谢谢,问题在发帖之后的不长时间内解决了,主要还是配置的问题,合适了就一遍过,不合适各种错误。 (2017-03-27 17:52) 

lz你好,请问最后是如何配置才好的?本人也遇到了同样的问题
离线兵317

只看该作者 13楼 发表于: 2019-01-23
回 mylove2013 的帖子
mylove2013:lz你好,请问最后是如何配置才好的?本人也遇到了同样的问题 (2018-12-27 01:45) 

特别不好意思啊,搞那个的时候是在上上一家公司做的项目了,今天才打开QTCN看,忘了。。
快速回复
限100 字节
 
上一个 下一个