系统环境:ubuntu 16.04

QT版本:5.12

交叉编译工具链:gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu

 

1.下载qt-everywhere-src-5.12.0.tar.xz

https://download.qt.io/archive/qt/5.12/5.12.0/single/

 

2.修改配置文件

vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

将等号右边改为你自已的交叉编译工具链,如果没有将交叉编译工具链配置到环境变量中,可以写绝对路径

#
# 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)

 

3.配置qt

./configure -release -opensource -confirm-license -xplatform linux-arm-gnueabi-g++ -prefix /usr/local/qt5.12.0 -nomake examples -no-opengl -silent -qpa linuxfb

-xplatform:指定第二步修改的编译链配置文件。

-prefix:指定安装的目录。

其它组件按需配置。

 

4.编译

make -j4

make install

 

5.安装到开发板

将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

 

6.使用vnc显示界面

如果板子没有屏可以用VNC显示,先屏蔽QT_QPA_PLATFORM变量,然后用下面的指令启动qt应用

app -platform vnc:size=1280x800,port=12345,depth=32,mmsize=600x350

然后在pc是用VNC Viewer输入开发板ip和prot即可显示界面。

 

7.字体

编译出来的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);

 

8.移植过程的错误

8.1 opengl错误

百度安装库解决

8.2 编译libiconv

在执行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

8.3 在编译libiconv时会出现错误

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

8.4 64位工具链编译错误

下载新的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'
 
Logo

更多推荐