系统环境:ubuntu 16.04
QT版本:5.12
交叉编译工具链:gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu
https://download.qt.io/archive/qt/5.12/5.12.0/single/
将等号右边改为你自已的交叉编译工具链,如果没有将交叉编译工具链配置到环境变量中,可以写绝对路径
# # qmake configuration for building with arm-linux-gnueabi-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc QMAKE_CXX = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ QMAKE_LINK = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ QMAKE_LINK_SHLIB = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ # modifications to linux.conf QMAKE_AR = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar cqs QMAKE_OBJCOPY = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objcopy QMAKE_NM = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm -P QMAKE_STRIP = /disksdh/shiyu/ipc-sdk-full-release-0821/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strip load(qt_config)
-xplatform:指定第二步修改的编译链配置文件。
-prefix:指定安装的目录。
其它组件按需配置。
将install后的目录复制到开发板,然后配置如下环境变量
export QTDIR=/data/qt_c305x_install export QT_QPA_FONTDIR=$QTDIR/lib/fonts export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins/ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x600:mmSize=800x600:offset=0x0:tty=/dev/tty1
如果板子没有屏可以用VNC显示,先屏蔽QT_QPA_PLATFORM变量,然后用下面的指令启动qt应用
app -platform vnc:size=1280x800,port=12345,depth=32,mmsize=600x350然后在pc是用VNC Viewer输入开发板ip和prot即可显示界面。
编译出来的qt库中没有字体,字体可以用文泉驿字体,下载ttc字体文件,放到lib/fonts中。
https://sourceforge.net/projects/wqy/files/wqy-zenhei/
在程序中设置字体:
QFont font; font.setPixelSize(16); font.setFamily("WenQuanYi Zen Hei"); font.setBold(false); w.setFont(font);
百度安装库解决
在执行QT程序是出现如下错误
QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
解决 :下载 http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz ./configure -prefix=$PWD/_install -host=arm-linux-gnueabihf make make install 把_install/lib 下的preloadable_libiconv.so 拷到系统的/system/lib 下, export LD_PRELOAD=/system/lib/preloadable_libiconv.so
In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function) _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
解决方法
在libiconv-1.14/srclib/stdio.in.h 中把
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
替换成
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16) _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif
下载新的config.sub和config.guess,替换掉旧的,注意libiconv源码目录下三个地方都要替换:
./libcharset/build-aux/config.sub ./build-aux/config.sub ./config.sub wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'