当前位置: 首页 > 工具软件 > Qt SDK > 使用案例 >

ARM Linux平台环境搭建-QT SDK编译

薛烨
2023-12-01

1. 起因

开发板本身附带的开发环境中,QT并没有添加Phonon模块,由于项目需要,需要用到流媒体播放功能,so,办法有两个,(1)想办法加phonon模块到QT中;(2)选用其它流媒体播放器。但是,鉴于本身对QT的用法还没有非常透彻的掌握,故选择第一种方案。
QT-sdk版本:qt-everywhere-opensource-src-4.8.5
Host:Ubuntu

2. 尝试

使用Ubuntu虚拟机编译qt-everywhere-opensource-src-4.8.5,直接采用./configure + make + make install,编译成功后,在QT Creator中添加该qt version,提示版本不兼容。意识到直接编译结果输出为适用于本机的sdk版本,arm linux版的要使用交叉编译获得。
所以,开始查找有关交叉编译QT sdk的相关资料,对于QT4,需要修改mkspacs/qws目录下qmake.conf文件下的内容,直接使用开发板资料提供的linux-arm-g++文件夹下的内容,内容为:

#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#

#export 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-
#export ROOTFS=/dv/nfs/bt

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = arm-fsl-linux-gnueabi-gcc -lts
QMAKE_CXX               = arm-fsl-linux-gnueabi-g++ -lts
QMAKE_LINK              = arm-fsl-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = arm-fsl-linux-gnueabi-g++ -lts
QMAKE_LFLAGS			+= -W1,rpath=/work/imx6/rootfs/usr/lib

# modifications to linux.conf
QMAKE_AR                = arm-fsl-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-fsl-linux-gnueabi-objcopy
QMAKE_STRIP             = arm-fsl-linux-gnueabi-strip

#QMAKE_INCDIR                = /work/imx6/rootfs/usr/include
#QMAKE_INCDIR               +=/work/imx6/rootfs/usr/include/arm-linux-gnueabi/
#QMAKE_INCDIR                +=/usr/local/arm/tslib/include
#QMAKE_LIBDIR                =/usr/local/arm/tslib/lib
#QMAKE_INCDIR_OPENGL         = /work/imx6/rootfs/usr/include/GL
#QMAKE_LIBDIR_OPENGL         = /work/imx6/rootfs/usr/lib
#QMAKE_INCDIR_OPENGL_ES1     = /usr/include/GLES
#QMAKE_LIBDIR_OPENGL_ES1     = /tftpboot/rootfs/usr/lib
#QMAKE_INCDIR_OPENGL_ES1CL   = /tftpboot/rootfs/usr/include/GLES
#QMAKE_LIBDIR_OPENGL_ES1CL   = /tftpboot/rootfs/usr/lib
#QMAKE_INCDIR_OPENGL_ES2     = /work/imx6/rootfs/usr/include/GLES2
#QMAKE_LIBDIR_OPENGL_ES2     = /work/imx6/rootfs/usr/lib
#QMAKE_INCDIR_EGL            = /work/imx6/rootfs/usr/include/EGL
#QMAKE_LIBDIR_EGL            = /work/imx6/rootfs/usr/lib
#QMAKE_LIBDIR_GAL            = /work/imx6/rootfs/usr/lib
#QMAKE_INCDIR_GAL            = /work/imx6/rootfs/usr/include/

QMAKE_LIBS_OPENGL_ES1       += -lGLESv1_CM -lEGL -lGAL
QMAKE_LIBS_OPENGL_ES1CL     += -lGLES_CL -lEGL -lGAL
#QMAKE_LIBS_EGL              += -lEGL
QMAKE_LIBS_EGL              += -lEGL -lGAL
QMAKE_LIBS_OPENGL_ES2       += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG           += -lOpenVG -lEGL -lGAL

IMX6_CFLAGS             = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
IMX6_CFLAGS_RELEASE     = -O2 $$IMX6_CFLAGS
QMAKE_CFLAGS_RELEASE   += $$IMX6_CFLAGS_RELEASE
QMAKE_CXXFLAGS_RELEASE += $$IMX6_CFLAGS_RELEASE
QMAKE_CFLAGS_DEBUG     += $$IMX6_CFLAGS
QMAKE_CXXFLAGS_DEBUG   += $$IMX6_CFLAGS

load(qt_config)

然后,configure,命令为
./configure -little-endian -host-little-endian -opensource -embedded arm -xplatform qws/linux-imx6-g++
配置完成,
接下来进行 make

再然后,make过程报错
Terminal中显示

/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/…/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/…/…/…/…/arm-fsl-linux-gnueabi/bin/ld: cannot find -lts
collect2: ld returned 1 exit status
make[1]: *** […/…/lib/libQtCore.so.4.8.5] Error 1
make[1]: Leaving directory `/usr/local/freescale/qt-everywhere-opensource-src-4.8.5/src/corelib’
make: *** [sub-corelib-make_default-ordered] Error 2

原因不明

在此查找问题的原因

发现原因是:编译Qt库的时候指定的tslib安装目录被移动了,找不到库的位置。
参考:https://www.cnblogs.com/zengjfgit/p/5131329.html
https://www.cnblogs.com/Jasonsblog/p/3757985.html

在./configure中指定tslib位置,重新配置、make
漫长等待。。。

在这个过程中又遇到了很多莫名其妙的问题,像
Glib disabled.
Phonon support cannot be enabled due to functionality tests!
。。。

感觉可能自己现在还是才疏学浅,换个方式,请教大神,给出方法

是不加-phonon参数,等qt库编译好后在后续添加进来,添加方法如下:

1,进入到你下载的文件里,再进入/src/phonon

2,make

3,make install

参见文章 https://blog.csdn.net/j1406493495/article/details/23448641

install完成,回到QT中加入phonon,编译成功。

参考

https://community.nxp.com/docs/DOC-94066

 类似资料: