全志A64Qt5.6.3移植

全志A64Qt5.6.3移植

  1. 把编译工具 gcc-linaro-aarch64.tar.xz 添加到环境.bashrc 中

  2. 下载 tslib-1.5.tar.gz ,libiconv-1.15.tar.gz ,qt-everywhere-opensource-src-5.6.1.tar.gz

  3. 由于tslib与libiconv无法识别arch64 所以需要解压编译工具并创建软链接。。

#!/bin/sh
ln -s aarch64-linux-gnu-addr2line arm-linux-addr2line 
ln -s aarch64-linux-gnu-ar arm-linux-ar 
ln -s aarch64-linux-gnu-as arm-linux-as 
ln -s aarch64-linux-gnu-c++ arm-linux-c++ 
ln -s aarch64-linux-gnu-c++filt arm-linux-c++filt 
ln -s aarch64-linux-gnu-cpp arm-linux-cpp 
ln -s aarch64-linux-gnu-elfedit arm-linux-elfedit 
ln -s aarch64-linux-gnu-ct-ng.config arm-linux-ct-ng.config 
ln -s aarch64-linux-gnu-g++ arm-linux-g++ 
ln -s aarch64-linux-gnu-gcc arm-linux-gcc 
ln -s aarch64-linux-gnu-gcc-ar arm-linux-gcc-ar 
ln -s aarch64-linux-gnu-gcc-nm arm-linux-gcc-nm 
ln -s aarch64-linux-gnu-gcc-ranlib arm-linux-gcc-ranlib 
ln -s aarch64-linux-gnu-gcov arm-linux-gcov 
ln -s aarch64-linux-gnu-gdb arm-linux-gdb 
ln -s aarch64-linux-gnu-gfortran arm-linux-gfortran 
ln -s aarch64-linux-gnu-gprof arm-linux-gprof 
ln -s aarch64-linux-gnu-ld arm-linux-ld 
ln -s aarch64-linux-gnu-ldd arm-linux-ldd 
ln -s aarch64-linux-gnu-nm arm-linux-nm 
ln -s aarch64-linux-gnu-objcopy arm-linux-objcopy 
ln -s aarch64-linux-gnu-objdump arm-linux-objdump 
ln -s aarch64-linux-gnu-pkg-config arm-linux-pkg-config 
ln -s aarch64-linux-gnu-pkg-config-real arm-linux-pkg-config-real 
ln -s aarch64-linux-gnu-ranlib arm-linux-ranlib 
ln -s aarch64-linux-gnu-readelf arm-linux-readelf 
ln -s aarch64-linux-gnu-size arm-linux-size 
ln -s aarch64-linux-gnu-strings arm-linux-strings 
ln -s aarch64-linux-gnu-strip arm-linux-strip
  1. 解压tslib 并编译安装

./autogen.sh

make clean && make distclean

echo “ac_cv_func_malloc_0_nonnull=yes” >arm-linux.cache

CC=arm-none-linux-gcc

./configure --host=arm-linux --prefix=/opt/tslib1.5_bin --cache-file=arm-linux.cache

make && make install

注意 如果后期QT执行./configure.sh出现tslib错误,请到tslib安装目录检查生成的库或者可执行文件是否是ARM的 如果是X86的 则需要重新指定 CC=arm-none-linux-gcc --host=arm-linux 直到编译出ARM版本的库

  1. 解压libiconv 并编译安装

#!/bin/sh
./configure -prefix=/opt/libiconv -host=arm-linux
make && make install
注意 libiconv 编译完成的库也需要确认是否是ARM版本的库,如果不是需要重新编译

  1. 解压qt-everywhere-opensource-src 并编译安装

修改该gcc配置

$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                = arm-linux-gnueabi-gcc
#QMAKE_CXX               = arm-linux-gnueabi-g++
#QMAKE_LINK              = arm-linux-gnueabi-g++
#QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

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

# modifications to g++.conf
QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip

load(qt_config)

~
配置编译参数
创建一个configure.sh,然后执行chmon 777 configure.sh
configure.sh内容由一下组成

#!/bin/sh
./configure  \
  -v \
  -prefix /opt/qt-5.6.3-arm64  \
  -opensource  \
  -confirm-license \
  -release  \
  -shared  \
  -pch \
  -linuxfb \
  -qpa linuxfb \
  -qt-libpng \
  -qt-sql-sqlite \
  -qt-libjpeg \
  -qt-freetype \
  -qt-pcre \
  -qt-zlib \
  -qt-libjpeg \
  -qt-libpng \
  -qreal float \
  -qpa eglfs \
  -no-xcb \
  -no-kms \
  -no-directfb \
  -no-sse2 \
  -no-largefile \
  -no-glib \
  -no-opengl \
  -no-gtkstyle \
  -no-compile-examples \
  -nomake tools \
  -nomake examples \
  -tslib \
  -skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland \
  -I /opt/tslib1.5_bin/include \
  -L /opt/tslib1.5_bin/lib \
  -xplatform linux-arm-gnueabi-g++ \
  -device-option CROSS_COMPILE=/opt/toolchain/aarch64-linux/bin/aarch64-linux-gnu-

然后make -j8 后面的-j8是多线程编译 具体根据自己的电脑来,
出现sh: 1: python: not found错误 解决方法如下
执行$ ls /usr/bin/pytho* 发现没有python,有个/usr/bin/python3.8

$ ls /usr/bin/pytho*
/usr/bin/python  /usr/bin/python3  /usr/bin/python3.8

将/usr/bin/python3.8软链接一个python 执行以下,问题解决

$ sudo ln -s /usr/bin/python3.8 /usr/bin/python

编译出错的一些问题可以参考上面的黄色字体部分

编译完成之后执行make install(会将编译好的库文件安装的指定的-prefix /opt/qt-5.6.3-arm64) #在安装example时报错可以不理睬

  1. 在qt-5.6.3-arm64 下生成A64 相关的样例和库
bin  doc  etc  examples  include  lib  mkspecs  plugins  qml  share
  1. 新建文件夹,拷贝/opt/qt-5.6-arm/examples ,/opt/qt-5.6-arm/lib, /opt/qt-5.6-arm/plugins ,/opt/tslib1.4/lib, /opt/libiconv/lib/ 并打包放到 开发板上

在开发板上配置环境变量运行测试程序

export QTDIR=/opt/qt-5.6-arm
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
export QWS_MOUSE_PROTO=/dev/input/event0
export LD_PRELOAD=/opt/qt-5.6-arm/lib/preloadable_libiconv.so

转载于:: https://blog.csdn.net/dianyiguai5431/article/details/101877127

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值