目录
t113_linux/platform/framework/qt/qt-everywhere-src-5.12.5$ ls -al
总用量 1756
drwxrwxr-x 49 lxg lxg 4096 10月 20 18:04 .
drwxrwxr-x 3 lxg lxg 4096 10月 8 14:54 ..
drwxrwxr-x 2 lxg lxg 4096 10月 8 14:54 bin
-rwxrwxr-x 1 lxg lxg 4606 10月 8 14:54 buildsetup_sf.sh
-rwxrwxr-x 1 lxg lxg 4194 10月 8 14:54 buildsetup.sh
-rwxrwxr-x 1 lxg lxg 4610 10月 19 17:47 buildsetup_t113.sh // 编译配置脚本
-rw-rw-r-- 1 lxg lxg 2845 10月 8 14:54 _clang-format
drwxrwxr-x 5 lxg lxg 4096 10月 8 14:54 coin
-rw-rw-r-- 1 lxg lxg 312881 10月 8 17:18 config.cache
-rw-rw-r-- 1 lxg lxg 295921 10月 20 18:04 config.log
-rw-rw-r-- 1 lxg lxg 29 10月 20 18:04 .config.notes
-rw-rw-r-- 1 lxg lxg 1108 10月 19 17:53 config.opt
-rwxrwxr-x 1 lxg lxg 38 10月 8 17:18 config.status
-rw-rw-r-- 1 lxg lxg 12219 10月 19 17:53 config.summary
drwxrwxr-x 70 lxg lxg 4096 10月 8 17:18 config.tests
-rwxrwxr-x 1 lxg lxg 1935 10月 8 14:54 configure
-rw-rw-r-- 1 lxg lxg 1980 10月 8 14:54 configure.bat
-rw-rw-r-- 1 lxg lxg 94 10月 8 14:54 configure.json
drwxrwxr-x 2 lxg lxg 4096 10月 8 14:54 fonts
-rw-rw-r-- 1 lxg lxg 6875 10月 8 14:54 .gitmodules
drwxrwxr-x 9 lxg lxg 4096 10月 8 14:54 gnuwin32
-rw-rw-r-- 1 lxg lxg 22961 10月 8 14:54 LICENSE.FDL
-rw-rw-r-- 1 lxg lxg 15351 10月 8 14:54 LICENSE.GPLv2
-rw-rw-r-- 1 lxg lxg 35641 10月 8 14:54 LICENSE.GPLv3
-rw-rw-r-- 1 lxg lxg 26828 10月 8 14:54 LICENSE.LGPLv21
-rw-rw-r-- 1 lxg lxg 8174 10月 8 14:54 LICENSE.LGPLv3
-rw-rw-r-- 1 lxg lxg 46903 10月 8 14:54 LICENSE.QT-LICENSE-AGREEMENT-4.0
-rw-rw-r-- 1 lxg lxg 373789 10月 20 18:04 Makefile
-rw-rw-r-- 1 lxg lxg 22 10月 8 17:17 .qmake.cache
-rw-rw-r-- 1 lxg lxg 2960 10月 8 17:17 .qmake.stash
-rw-rw-r-- 1 lxg lxg 8709 10月 19 10:47 .qmake.super
drwxrwxr-x 10 lxg lxg 4096 10月 8 17:25 qt3d
drwxrwxr-x 10 lxg lxg 4096 10月 8 17:29 Qt_5.12.5 // 编译后生成目录
drwxrwxr-x 8 lxg lxg 4096 10月 8 17:21 qtactiveqt
drwxrwxr-x 7 lxg lxg 4096 10月 8 17:21 qtandroidextras
drwxrwxr-x 15 lxg lxg 4096 10月 8 17:20 qtbase
drwxrwxr-x 7 lxg lxg 4096 10月 8 17:24 qtcanvas3d
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:27 qtcharts
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:25 qtconnectivity
drwxrwxr-x 7 lxg lxg 4096 10月 8 17:27 qtdatavis3d
drwxrwxr-x 14 lxg lxg 4096 10月 8 17:24 qtdeclarative
drwxrwxr-x 6 lxg lxg 4096 10月 8 17:27 qtdoc
-rw-rw-r-- 1 lxg lxg 65846 10月 8 14:54 .QT-ENTERPRISE-LICENSE-AGREEMENT
-rwxrwxr-x 1 lxg lxg 1219 10月 20 17:59 qtenv_sf.sh
-rwxrwxr-x 1 lxg lxg 1250 10月 20 18:04 qtenv.sh // 编译环境变量配置
-rw-rw-r-- 1 lxg lxg 65846 10月 8 14:54 .QT-FOR-APPLICATION-DEVELOPMENT-LICENSE-AGREEMENT
-rw-rw-r-- 1 lxg lxg 65846 10月 8 14:54 .QT-FOR-AUTOMATION-LICENSE-AGREEMENT
-rw-rw-r-- 1 lxg lxg 46475 10月 8 14:54 .QT-FOR-AUTOMOTIVE-LICENSE-AGREEMENT
-rw-rw-r-- 1 lxg lxg 65846 10月 8 14:54 .QT-FOR-DEVICE-CREATION-LICENSE-AGREEMENT
drwxrwxr-x 13 lxg lxg 4096 10月 8 17:25 qtgamepad
drwxrwxr-x 6 lxg lxg 4096 10月 8 17:24 qtgraphicaleffects
drwxrwxr-x 8 lxg lxg 4096 10月 8 17:21 qtimageformats
drwxrwxr-x 13 lxg lxg 4096 10月 8 17:28 qtlocation
drwxrwxr-x 7 lxg lxg 4096 10月 8 17:21 qtmacextras
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:26 qtmultimedia
drwxrwxr-x 10 lxg lxg 4096 10月 8 17:21 qtnetworkauth
-rw-rw-r-- 1 lxg lxg 2962 10月 8 14:54 qt.pro
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:24 qtpurchasing
drwxrwxr-x 7 lxg lxg 4096 10月 8 17:24 qtquickcontrols
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:26 qtquickcontrols2
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:25 qtremoteobjects
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:26 qtscript
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:25 qtscxml
drwxrwxr-x 13 lxg lxg 4096 10月 8 17:25 qtsensors
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:21 qtserialbus
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:21 qtserialport
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:27 qtspeech
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:21 qtsvg
drwxrwxr-x 10 lxg lxg 4096 10月 8 17:24 qttools
drwxrwxr-x 3 lxg lxg 4096 10月 8 17:26 qttranslations
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:27 qtvirtualkeyboard
drwxrwxr-x 13 lxg lxg 4096 10月 8 17:26 qtwayland
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:26 qtwebchannel
drwxrwxr-x 10 lxg lxg 4096 10月 8 17:28 qtwebengine
drwxrwxr-x 5 lxg lxg 4096 10月 8 17:25 qtwebglplugin
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:24 qtwebsockets
drwxrwxr-x 11 lxg lxg 4096 10月 8 17:28 qtwebview
drwxrwxr-x 7 lxg lxg 4096 10月 8 17:27 qtwinextras
drwxrwxr-x 6 lxg lxg 4096 10月 8 17:21 qtx11extras
drwxrwxr-x 12 lxg lxg 4096 10月 8 17:26 qtxmlpatterns
-rw-rw-r-- 1 lxg lxg 3842 10月 8 14:54 README
drwxrwxr-x 4 lxg lxg 4096 10月 19 10:47 src
-rw-rw-r-- 1 lxg lxg 40 10月 8 14:54 .tag
环境变量
qtenv.sh
编译生成目录地址 platform/framework$ ls auto/rootfs/etc/qtenv.sh
export QTDIR=/usr/local/Qt_5.12.5
if [ -d $QTDIR ];then
export QT_ROOT=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/fonts
TouchDevice=gt9xxnew_ts // 汇顶触摸
for InputDevices in /sys/class/input/input*
do
DeviceName=`cat $InputDevices/name`
if [ $DeviceName == $TouchDevice ];then
TouchDeviceNum=${InputDevices##*input}
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
fi
done
if [ ! -n "$TouchDeviceNum" ]; then
echo "Error:Input device $TouchDevice can not be found,plz check it!"
fi
export QT_QPA_PLATFORM=eglfs
export QT_QPA_GENERIC_PLUGINS=evdevtouch
export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90
export QWS_MOUSE_PROTO=
export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`
mkdir -p /dev/shm
ulimit -c unlimited
#debug Launcher &
debug MediaUI &
echo "find qt5 installed done"
fi
QT 显示框架
主要有以下几种显示架构可供选择:
- Qt + Wayland
- Qt + EGLFS
- EGL program + X11
- Wayland
QT_QPA_PLATFORM=eglfs
Qt + EGLFS 是 Qt 自己实现的一个 GUI 系统,不支持多窗口,但也因此少了 window composite。
Qt + EGLFS 和 dri2 的方式类似,区别就在于 Qt + EGLFS 的 font buffer 在自己用 gpu composite 后,是直接送给 DRM 显示,而 X 里是送至 Window manager 做 composite,所以 EGLFS 在效率上是有优势的。
QT_QPA_PLATFORM=linuxfb
该插件通过Linux的fbdev子系统直接写入帧缓冲区。仅支持软件渲染的内容。请注意,在某些设置下,显示性能可能会受到限制
编译配置
buildsetup_t113.sh
cat buildsetup_t113.sh
#!/bin/sh
# LICHEE_TOP_DIR =/home/yuanguochao/other/t5_bak/longan
# LICHEE_BR_OUT =/home/yuanguochao/other/t5_bak/longan/out/t507/demo2.0/longan/buildroot
# GPU include =$LICHEE_TOP_DIR/platform/core/graphics/gpu_um_pub/mali-bifrost/include
# GPU lib =$LICHEE_TOP_DIR/platform/core/graphics/gpu_um_pub/mali-bifrost/fbdev/mali-g31/aarch64-linux-gnu/lib/
# SYSROOT =$LICHEE_BR_OUT/out/t507/demo2.0/longan/buildroot/host/usr/aarch64-buildroot-linux-gnu/sysroot/
PWD=`pwd`
export QT_SRC_DIR=$PWD
source $PWD/bin/export_gcc484.sh
#export QT_GPU_LIB=$LICHEE_TOP_DIR/platform/core/graphics/gpu_um_pub/mali-bifrost/fbdev/mali-g31/aarch64-linux-gnu/lib
#export QT_GPU_INC=$LICHEE_TOP_DIR/platform/core/graphics/gpu_um_pub/mali-bifrost/include
#export SYSROOT=$LICHEE_TOP_DIR/out/t507/demo2.0/longan/buildroot/host/usr/aarch64-buildroot-linux-gnu/sysroot
export SYSROOT=$LICHEE_TOP_DIR/out/${LICHEE_IC}/evb1_auto/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot
export PATH=$LICHEE_BR_OUT/host/bin/:$PATH
#export CROSS_COMPILE=$LICHEE_TOP_DIR/out/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
#./${LICHEE_IC}/${LICHEE_BOARD}/ICHEE_LINUX_DEV/buildroot/host/opt/ext-toolchain/bin/arm-linux-gnueabi-gcc
export CROSS_COMPILE_DIR=$LICHEE_TOP_DIR/out/${LICHEE_IC}/${LICHEE_BOARD}/${ICHEE_LINUX_DEV}/buildroot/host/opt/ext-toolchain/bin/
export CROSS_COMPILE=$CROSS_COMPILE_DIR/arm-linux-gnueabi-
export CPLUS_INCLUDE_PATH=$PWD/qtbase/src/3rdparty/angle/include:$CPLUS_INCLUDE_PATH
# 环境变量
QT_ENV_CFG=qtenv.sh
QT_ENV_TARGET_DIR=$LICHEE_PLATFORM_DIR/framework/auto/rootfs/etc
sed -i '/^export QTDIR*/d' $QT_ENV_CFG
sed -i '1 a \export QTDIR='$QT_RUN_DIR'' $QT_ENV_CFG
HOST=arm-linux-gnueabi
OUT_GCC=`find ${LICHEE_BR_OUT} -perm /a+x -a -regex '.*-gcc'`
OUT_CPP=`find ${LICHEE_BR_OUT} -perm /a+x -a -regex '.*-g\+\+'`
export CC=$OUT_GCC
export CXX=$OUT_GCC
cpu_cores=`cat /proc/cpuinfo | grep "processor" | wc -l`
if [ ${cpu_cores} -le 8 ] ; then
LICHEE_JLEVEL=${cpu_cores}
else
LICHEE_JLEVEL=${cpu_cores}
fi
#env
function cdqtroot
{
cd $QT_SRC_DIR
}
#-no-c++11
function qtmakeconfig
{
#cp $QT_GPU_LIB/* $SYSROOT/lib/ -rf
mkdir -p $QT_INSTALL_DIR
$QT_SRC_DIR/configure \
-opensource \
-confirm-license \
-extprefix $QT_INSTALL_DIR \
-sysroot $SYSROOT \
-xplatform arm-linux-gnueabi-g++ \
-device-option CROSS_COMPILE=$CROSS_COMPILE \
-R /usr/lib \
-no-strip \
-c++std c++11 \
-shared \
-nomake examples \
-accessibility \
-no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci \
-no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds \
-no-sql-sqlite -plugin-sql-sqlite \
-no-qml-debug \
-no-sse2 \
-no-sse3 \
-no-ssse3 \
-no-sse4.1 \
-no-sse4.2 \
-no-avx \
-no-avx2 \
-no-mips_dsp \
-no-mips_dspr2 \
-qt-zlib \
-no-journald \
-qt-libpng \
-qt-libjpeg \
-qt-freetype \
-qt-harfbuzz \
-no-openssl \
-no-xcb-xlib \
-no-glib \
-no-pulseaudio \
-alsa \
-gui \
-widgets \
-v \
-optimized-qmake \
-no-cups \
-no-iconv \
-evdev \
-no-icu \
-no-fontconfig \
-no-strip \
-pch \
-dbus \
-no-use-gold-linker \
-no-directfb \
-eglfs \
-qpa eglfs \
-linuxfb \
-no-kms \
-opengl es2 \
-no-system-proxies \
-no-slog2 \
-no-pps \
-no-imf \
-no-lgmon \
-no-tslib
}
function qtmakeall
{
make -j${LICHEE_JLEVEL} -C $QT_SRC_DIR
}
function qtmakeinstall
{
make -j${LICHEE_JLEVEL} -C $QT_SRC_DIR install
mkdir -p $QT_TARGET_DIR
#cp libs to target
cp -rf \
$QT_INSTALL_DIR/lib $QT_INSTALL_DIR/plugins $QT_INSTALL_DIR/qml \
$QT_TARGET_DIR
#cp fonts to target
cp -rf fonts $QT_TARGET_DIR
#Remove redundant files
rm -rf $QT_TARGET_DIR/lib/cmake
rm -rf $QT_TARGET_DIR/lib/pkgconfig
rm -rf $QT_TARGET_DIR/lib/*.a
rm -rf $QT_TARGET_DIR/lib/*.prl
rm -rf $QT_TARGET_DIR/lib/*.la
#cp $QT_GPU_LIB/* $LICHEE_BR_OUT/target/usr/lib/ -rf
cp $QT_ENV_CFG $QT_ENV_TARGET_DIR
}
function qtmakecleanall
{
cd $QT_SRC_DIR
make distclean -j${LICHEE_JLEVEL}
make -C $QT_SRC_DIR clean -j${LICHEE_JLEVEL}
rm -rf $QT_INSTALL_DIR
rm -rf $QT_TARGET_DIR
}
echo " "
echo "********************** useage ***************************"
echo " please use:"
echo " qtmakeconfig: config qt env."
echo " qtmakeall: build qt"
echo " qtmakeinstall: install qt-lib and cp to target dir."
echo " qtmakecleanall: clean qt and rm all target."
echo " QT_INSTALL_DIR: " $QT_INSTALL_DIR
echo " QT_TARGET_DIR: " $QT_TARGET_DIR
echo " qtmakecleanall: clean qt and rm all target."
echo " "
屏幕显示方向
【FAQ1320】 横屏竖显/竖屏横显,旋转fb配置
sh-4.4# cat sys/class/disp/disp/attr/sys
screen 0:
de_rate 300000000 hz, ref_fps:60
mgr0: 800x1280 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false] iommu[1]
dmabuf: cache[0] cache max[0] umap skip[0] overflow[0]
lcd output backlight( 50) fps:60.9 800x1280
err:1 skip:212 irq:2791 vsync:0 vsync_skip:0
BUF enable ch[1] lyr[0] z[16] prem[N] a[pixel 255] fmt[ 0] fb[1280, 800;1280, 800;1280, 800] crop[ 0, 0,1280, 800] frame[ 0, 0, 800,1280] addr[ 0, 0, 0] flags[0x 0] trd[0,0]
depth[ 0]
单独编译
source .buildconfig
./platform/framework/auto/qt_demo/build.sh
ubuntu qt 安装目录
./opt/Qt5.12.5/Tools/QtCreator/bin/qtcreator