查看完整版本: [-- jz2440移植Qt5.6 --]

QTCN开发网 -> Qt嵌入式开发 -> jz2440移植Qt5.6 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

李嘉图 2020-05-01 21:01

jz2440移植Qt5.6



编译Embeded Qt5.6


使用的平台时ubuntu18.04,交叉编译环境时4.4.3
依赖库安装:
sudo apt-get install qt5*-dev
sudo apt-get install qtbase5-dev
sudo apt-get install qtdeclarative5-dev qml-module-qtquick-controls
先提前安装好tslib库
注意修改/opt/FriendlyARM/toolschain/4.4.3arm-none-linux-gnueabi/sys-root/usr/include/linux/input.h,将EV_VERSION改为0x010001
1、准备好源码包
qt-everywhere-opensource-src-5.6.0.tar.gz

2、解压qt5.6源码,并修改配置平台信息
  1. tar -zxf qt-everywhere-opensource-src-5.6.0.tar.gz cd qt-everywhere-opensource-src-5.6.0/ gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

将下面的代码复制进qmake.conf文件中
#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS     += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
QMAKE_CXXFLAGS     += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
include(../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX               = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK              = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++ -lts

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

3、配置编译信息
把下面这些粘贴进去
-prefix后面是编译好的Qt安装路径,提前建立好
-I后面是编译安装好的tslib中include路径
-L后面是编译安装好的tslib中lib路径
./configure  -prefix /home/yy/jz2440/qt/Qt5.6 -v -opensource -release -confirm-license -xplatform linux-arm-gnueabi-g++ -shared -qt-zlib -no-gif -qt-libjpeg -no-nis -no-opengl -no-iconv -no-cups   -no-glib   -no-dbus   -no-rpath   -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2   -no-avx    -no-openssl   -nomake tools  -qt-libpng   -tslib   -nomake examples -skip qtdeclarative  -I  /home/yy/jz2440/wenjian/tslib/tmp/include -L /home/yy/jz2440/wenjian/tslib/tmp/lib

注意,在脚本中有一个很重要配置:-skip qtdeclarative \ ,如果不加上这一句,在make时出现错误:
sh:1:python:not found
Project ERROR:Building QtQml requires Python.
Makefile:44: recipe for target 'module-qtdeclarative-install_subtargets' failed
make: *** [module-qtdeclarative-install_subtargets] Error 3
在实际的编译过程中,使用其他博客的配置信息会出错,以上的配置信息实测没有问题


4、在编译之前要修改两个文件,否则编译会不通过
修改qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h文件:
//#define WEBP_USE_NEON //注释第68行后就可以编译通过

修改/home/msi/qt-everywhere-opensource-src-5.6.0/qttools/src/src.pro
将SUBDIRS += linguist \ 下面一行的 “qdoc” 删除

否则,在接下来的make &&make install过程中会出现(原因是qdoc这个包里面用到 qml,而我们在选项-skip qtdeclarative 设置了不编译qml,所以不删除这个qdoc会报错Project ERROR: Unknown module(s) in QT: qmldevtools-private:
cd qdoc/ && ( test -e Makefile || /home/msi/qt-everywhere-opensource-src-5.6.0/qtbase/bin/qmake /home/msi/qt-everywhere-opensource-src-5.6.0/qttools/src/qdoc/qdoc.pro -o Makefile ) && make -f Makefile install Project ERROR: Unknown module(s) in QT: qmldevtools-private Makefile:188: recipe for target 'sub-qdoc-install_subtargets' failed make[2]: *** [sub-qdoc-install_subtargets] Error 3 make[2]: Leaving directory '/home/msi/qt-everywhere-opensource-src-5.6.0/qttools/src' Makefile:56: recipe for target 'sub-src-install_subtargets' failed make[1]: *** [sub-src-install_subtargets] Error 2 make[1]: Leaving directory '/home/msi/qt-everywhere-opensource-src-5.6.0/qttools' Makefile:529: recipe for target 'module-qttools-install_subtargets' failed make: *** [module-qttools-install_subtargets] Error 2
5、make -j4
6、make install

安装Qt桌面版


下载qt-opensource-linux-x64-android-5.7.0.run

sudo ./qt-opensource-linux-x64-android-5.7.0.run
安装的方法非常简单记得在一路next选择默认的即可,记得在选择组件的时候两个都勾上,把工具全部都安装上去

安装完成之后进行配置
打开软件-》Tools-》Options












编译之前先Run qmake一下




安装 libiconv-1.14


下载解压后:
–host编译为目标格式文件
–prefix编译安装目标目录
CC编译器中arm-none-linux-gnueabi-gcc路径
LDFLAGS编译器中/sys-root/lib路径

cd libiconv-1.14/
./configure --host=arm-none-linux-gnueabi --prefix=/home/china/work/jz2440/qt/libiconv CC=/usr/local/arm/gcc-4.4.3/bin/arm-none-linux-gnueabi-gcc LDFLAGS="-L/usr/local/arm/gcc-4.4.3/bin/arm-none-linux-gnueabi/sys-root/lib" --enable-static
make
make install

然后把安装目录下的preloadable_libiconv.so文件复制到文件系统的/usr/lib/文件下,在/etc/profile中添加

export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so


设置显示中文字体




默认时不能显示中文的,需要自己加入中文字库DroidSansFallback.ttf
先下载DroidSansFallback.ttf字库文件
将字库文件放入到文件系统中/usr/lib/fonts/中,如果没有fonts目录可以自己建一个
然后在Qt代码中添加如下代码设置字体






点击小锤子编译
生成的可执行文件在工程目录下build-app2-JZ2440-Debug下

将交叉编译好的可执行文件app2通过nfs拷贝到文件系统中
cp app2 /home/yy/nfsroot在开发板上运行  ./app2





查看完整版本: [-- jz2440移植Qt5.6 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled