当前位置:   article > 正文

交叉编译QT5.7.0源码生成qmake工具_project error: building qtqml requires python.

project error: building qtqml requires python.

参考博客:

https://blog.csdn.net/sinat_20006769/article/details/79081154

https://blog.csdn.net/u012175418/article/details/52704734


编译前准备:

1.交叉编译工具:arm-linux-gnueabihf-gcc (野火® i.MX6ULL Mini开发板提供的,可与其不同)

2.Qt源码版本是:qt-everywhere-opensource-src-4.8.7   http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.7/5.7.0/submodules/

3.tslib源码版本是:tslib-1.4   https://github.com/libts/tslib/releases/tag/1.4

移植
我们需要从 Qt Downloads 下载 5.7 版本的源码:qt-everywhere-opensource-src-5.7.0.tar.gz ,为什么选择 5.7 版本的软件呢?因为 5.7 版本以后,将不再支持 Windows XP ,为了保持兼容性才选择这个版本。


一、arm交叉编译器的安装

将“arm-gcc.tar.gz”解压到Ubuntu 系统的文件夹“/usr/local/arm”中。 
然后修改环境变量,切换到home目录,然后输入命令“vim .bashrc”,打开设置环境变量的文件“.bashrc”,将环境变量修改为“export PATH=$PATH:/usr/local/arm/arm-gcc/bin” 
保存退出,然后更新一下环境变量,输入命令“source .bashrc”。

source .bashrc

接着测试一下,编译器路径设置的对不对。如下图,在Ubuntu 命令行中输入命令”arm”, 
然后按键盘”Tab”,出现编译器“arm-none-linux-gnueabi-gcc-4.8.2”,这就说明编译 
器路径设置正确。


二、交叉编译tslib1.4

对触摸屏信号的获取、校正、滤波处理,均采用开源的tslib,本文采用的tslib版本为最新的tslib1.4(可以从本文提供的链接中下载tslib1.4)。 
1.将下载好的tslib1.4拷贝到/home/lz/transplant目录下(可以根据自己的系统选择某一目录),然后执行解压缩命令

tar -vxf tslib-1.4.tar.gz

切换到tslib目录: cd tslib

安装交叉编译tslib必须的一些工具(可以先查看是否已安装,ubuntu16.04自带这些工具,可跳过)

我这里是ubuntu18.04

sudo apt-get install autoconf

sudo apt-get install automake

sudo apt-get install libtool

 2.利用脚本写编译过程 
在tslib文件夹下新建文件configTslib14.sh

vi configTslib14.sh

configTslib14.sh脚本文件内容如下: 

  1. #!/bin/sh
  2. make clean && make distclean
  3. echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
  4. CC=/usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-gcc ./configure --host=arm-linux --prefix=/opt/tslib1.4 --cache-file=arm-linux.cache

 运行脚本文件

./configTslib14.sh

如果出现错误:configure.ac:172: error: possibly undefined macro: AC_MSG_ERROR 

解决方法:

sudo apt-get install pkg-config

然后编译

make

安装

sudo make install

执行结束后,我们查看一下是否安装成功,执行命令:

ls /opt/tslib1.4

如果出现bin,etc,include,lib这前4个目录,如下图所示,说明交叉编译并安装tslib成功。


 三、交叉编译QT5.7.0

1、首先将下载的qt-everywhere-opensource-src-5.7.0.tar.gz解压,然后进去文件夹下

  1. tar -vzxf qt-everywhere-opensource-src-5.7.0.tar.gz
  2. cd qt-everywhere-opensource-src-5.7.0

2、修改交叉编译架构用到的信息:

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

修改如下图所示:

  1. #
  2. # qmake configuration for building with arm-linux-gnueabi-g++
  3. #
  4. MAKEFILE_GENERATOR = UNIX
  5. CONFIG += incremental
  6. QMAKE_INCREMENTAL_STYLE = sublib
  7. QT_QPA_DEFAULT_PLATFORM = linux #eglfs
  8. QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
  9. QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
  10. include(../common/linux.conf)
  11. include(../common/gcc-base-unix.conf)
  12. include(../common/g++-unix.conf)
  13. # modifications to g++.conf
  14. QMAKE_CC = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-gcc -lts
  15. QMAKE_CXX = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
  16. QMAKE_LINK = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
  17. QMAKE_LINK_SHLIB = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
  18. # modifications to linux.conf
  19. QMAKE_AR = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-ar cqs
  20. QMAKE_OBJCOPY = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-objcopy
  21. QMAKE_NM = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-nm -P
  22. QMAKE_STRIP = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-strip
  23. load(qt_config)

注意:这里最好指定交叉编译工具的绝对路径(参考别人的博客时告之,有多个编译工具时,最好指定绝对路径)

3、创建一个脚本文件(autoConfigure.sh),用于生成Makefile,执行命令

gedit autoConfigure.sh

autoConfigure.sh脚本内容:

  1. #!/bin/sh
  2. ./configure \
  3. -v \
  4. -prefix /opt/qt-5.7.0 \
  5. -release \
  6. -opensource \
  7. -no-accessibility \
  8. -make libs \
  9. -xplatform linux-arm-gnueabi-g++ \
  10. -optimized-qmake \
  11. -pch \
  12. -qt-sql-sqlite \
  13. -qt-zlib \
  14. -tslib \
  15. -skip qtdeclarative \
  16. -no-opengl \
  17. -no-sse2 \
  18. -no-openssl \
  19. -no-nis \
  20. -no-cups \
  21. -no-glib \
  22. -no-pkg-config \
  23. -no-separate-debug-info \
  24. -I/opt/tslib1.4/include -L/opt/tslib1.4/lib

其中-prefix /opt/qt-5.7.0代表我们编译完QT5.4.1后要安装地址;-tslib代表QT对触摸板的支持,-I 和 -L后面分别为为第一步编译tslib的include和lib的安装目录。 

注意,在脚本中有一个很重要配置:-skip qtdeclarative \ ,如果不加上这一句,在make时出现错误:

  1. Project MESSAGE: Hunspell not found! Spell correction will not be available.
  2. Project ERROR: Unknown module(s) in QT: quick
  3. Makefile:44: recipe for target 'sub-virtualkeyboard-make_first' failed
  4. make[2]: *** [sub-virtualkeyboard-make_first] Error 3
  5. 或者
  6. sh:1:python:not found
  7. Project ERROR:Building QtQml requires Python.
  8. Makefile:44: recipe for target 'module-qtdeclarative-install_subtargets' failed
  9. make: *** [module-qtdeclarative-install_subtargets] Error 3

 参考网上帖子:How to install and build Qt5.7-everywhere for beaglebone black- OS debian?

然后执行:make -j4

然后执行:sudo make install

安装文件被安装到路径: /opt/qt-5.7.0/

ls /opt/qt-5.7.0/

如果出现以下文件夹,则制作成功


四、设置QT的交叉编译环境

我们这里就不安装qtcreator 

        直接使用  /opt/qt-5.7.0/bin/qmake  来编译windows下qtcreator写好的项目

1.打开设置环境变量的文件“.bashrc”,将 /opt/qt-5.7.0/bin/qmake 取别名为 qmake

alias qmake="/opt/qt-5.7.0/bin/qmake"

2.进去虚拟机的共享文件夹QT项目下(以test2UDP为例)

cd /mnt/hgfs/share/test2UDP

test2UDP文件内容,如下图:

3、执行qmake,生成Makefile

qmake

4、执行MMakefile

make

5、编译成功后生成,可执行文件 ARM架构的  test2UDP

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/292132?site
推荐阅读
相关标签
  

闽ICP备14008679号