交叉编译用于移植的Qt库

前言

如果在Ubuntu上使用qt开发可移植到周立功开发板的应用程序,需要在Ubuntu上交叉编译用于移植的Qt库,具体做法如下:

1、下载源码

源码qt-everywhere-opensource-src-5.9.6.tar.xz拷贝到ubuntu自建的software文件下

2、解压

点击提取到此处

3、安装配置

运行脚本文件进行安装配置。

3.1 创建脚本

进入qt-everywhere-opensource-src-5.9.6目录,创建脚本,脚本名称自己定义build.h,编写内容。可以参考周立功原系统中提供的脚本文件(虚拟机打开的镜像work文件下)
在这里插入图片描述
内容如下:
在这里插入图片描述
将该文件复制到qt-everywhere-opensource-src-5.9.6目录下。

双击打开,按i键进入到插入模式,然后对其修改保存,修改后内容如下:
此处仅对安装路径进行修改。-I和-L(链接库)作用是引用触摸屏的头文件和库文件。
在这里插入图片描述
按esc退出插入模式,输入:wq!保存退出。
电子版如下:

#!/bin/bash

./configure \
    -prefix /opt/qt-5.9.6_new \
    -v \
    -confirm-license \
    -opensource \
    -release \
    -make libs \
    -xplatform linux-arm-gnueabi-g++ \
    -optimized-qmake \
    -pch \
    -qt-sqlite \
    -qt-libjpeg \
    -qt-libpng \
    -qt-zlib -tslib \
    -no-opengl -no-sse2 -no-openssl -no-cups -no-glib -no-xcb \
    -no-separate-debug-info -nomake examples \
    -nomake tools -nomake tests -no-iconv -no-dbus \
    -I /opt/tslib_new/include \
    -L /opt/tslib_new/lib

3.2 修改qmake.conf文件

找到路径:/qt-everywhere-opensource-src-5.9.6/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)

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS           += -march=armv7-a -mtune=cortex-a7
QMAKE_CXXFLAGS         += -march=armv7-a -mtune=cortex-a7

QMAKE_INCDIR = /opt/tslib/include
QMAKE_LIBDIR = /opt/tslib/lib

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

 # modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip
load(qt_config)

4、执行自己编写的脚本文件生成makefile文件

进入/qt-everywhere-opensource-src-5.9.6目录
执行脚本文件build.sh
执行:
./build.sh
在这里插入图片描述
回车,等待几分钟,等待完成。
在这里插入图片描述
运行完出现注意事项,不影响继续
在这里插入图片描述

5、输入make

在这里插入图片描述
等待完成时间约X小时
不允许出现error,如果出现,最好修改后重新解压,编译
在这里插入图片描述

6、输入make install

在这里插入图片描述

7、查看安装目录下生成的文件

安装路径为配置文件自己定义的地址。
在这里插入图片描述
查看include文件夹下
在这里插入图片描述
完成

8、编译错误记录

8.1 脚本错误

1、错误1截图:
在这里插入图片描述
如果提示错误,需要进行修改:
ERROR: Invalid value given for boolean command line option ‘sql-sqlite’.
错误:为布尔命令行选项“sql sqlite”提供的值无效。
ERROR: Unknown command line option ‘-no-c++11’.
错误:未知的命令行选项“-no-c++11”。
错误1解决:
更改:
-qt-sqlite
-c++std c++11 \

2、格式错误:
每次换行 需要结尾输入\ ,\后面不允许出现其他字符空格等。

8.2 make错误

错误原因:采用自己搭建的linux系统,有些工具或库没有安装,需要安装。
针对出现的错误,进行安装。

可能出现错误,举例如下:
错误1:
sh: 1: python: not found
Project ERROR: Building QtQml requires Python.
Makefile:333: recipe for target ‘module-qtdeclarative-make_first’ failed
make: *** [module-qtdeclarative-make_first] Error 3
解决1:
安装Python:
sudo apt-get install swig python-dev python3-dev
在这里插入图片描述
其他错误
安装工具:
Sudo apt-get install pkg-config
安装库
Sudo apt-get install libx1-dev

通过解决以上,基本上不在报错。
注意:报错后,重新make需要完全删除生成makefile文件,最好重新解压编译。
可以通过make clean进行,但清理不干净。导致报错如:error2 error3.

9、移植

安装成功后, 应可以在安装目录下查看到相关的文件,本文示例的安装路径为
/opt/qt-5.9.6_new, 可在该目录下看到 bin、 imports、 include、 lib、 mkspec、 plugins、 translations等新目录。
在这里插入图片描述
只需要移植 lib 和 plugins,本文示例的 Qt 安装路径在移植系统的根文件系统下(rootfs/usr/local/qt-5.9.6)

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值