全志A64Qt5.6.3移植
-
把编译工具 gcc-linaro-aarch64.tar.xz 添加到环境.bashrc 中
-
下载 tslib-1.5.tar.gz ,libiconv-1.15.tar.gz ,qt-everywhere-opensource-src-5.6.1.tar.gz
-
由于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
- 解压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版本的库
- 解压libiconv 并编译安装
#!/bin/sh
./configure -prefix=/opt/libiconv -host=arm-linux
make && make install
注意 libiconv 编译完成的库也需要确认是否是ARM版本的库,如果不是需要重新编译
- 解压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时报错可以不理睬
- 在qt-5.6.3-arm64 下生成A64 相关的样例和库
bin doc etc examples include lib mkspecs plugins qml share
- 新建文件夹,拷贝/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