李嘉图 |
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源码,并修改配置平台信息
- 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
|
|