Qt5.9.9交叉编译(带sqlite3、OpenSSL)

news2024/12/23 22:34:18

1、交叉编译工具链

      这里ARM平台是ARM CortexA9的,一般交叉编译工具链demo板厂商都会提供,若未提供或想更换新版本的交叉编译工具链可参考以下方式获取。

1.1 下载适用于ARM CortexA9的交叉编译工具链

Linaro Releases下载gcc4的最新版xxxx-i686_arm-linux-gnueabihf.tar.xz

1.2 配置交叉编译工具链

1.2.1 解压下载好的工具链包

$ tar xvf gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf.tar.xz

1.2.2 部署并配置工具链

拷贝到系统路径

$ sudo mv gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf /usr/local/arm-linux-gnueabihf

配置环境变量

$ vim ~/.bashrc

在文件末加入环境变量
export PATH=/usr/local/arm-linux-gnueabihf/bin:$PATH

使环境变量生效
$ source ~/.bashrc

检验工具链是否正常使用

$ arm-linux-gnueabihf-gcc -v

使用内建 specs。
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/usr/local/arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.4/lto-wrapper
目标:arm-linux-gnueabihf
配置为:/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-4.9-2017.01/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/i686-pc-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/i686-pc-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/i686-pc-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-objc-gc --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=hard --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/i686-pc-linux-gnu/arm-linux-gnueabihf/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-i386-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/i686-pc-linux-gnu
线程模型:posix
gcc 版本 4.9.4 (Linaro GCC 4.9-2017.01)

 2、SQLite交叉编译

    在后面交叉编译Qt源码的时候会用到

2.1 SQLite源码获取

SQLite Download Page下载最新版sqlite-autoconf-xxxx.tar.gz SQLite源码

2.2 交叉编码

解压源码
$ tar -xvf sqlite-autoconf-3360000.tar.gz

到源码路径
$ cd sqlite-autoconf-3360000/

配置编译
$ ./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux --prefix=/opt/arm_sqlite

构建
$ make

安装
$ sudo make install

 3、OpenSSL交叉编译

    Qt使用SSL时需用到OpenSSL库。

3.1 下载OpenSSL源码

Releases · openssl/openssl · GitHub下载OpenSSL_1_x_x最新版的,因为Qt5.9只支持OpenSSL_1的环境,这里下载OpenSSL_1_1_1k 

3.2 交叉编译

解压
@ tar -xvf openssl-OpenSSL_1_1_1k.tar.gz

进入到源码路径
@ cd openssl-OpenSSL_1_1_1k/

配置为静态编译,注意这里的/home/xxx是当前用户路径,xxx代表当前用户名
@ ./config -fPIC no-shared no-asm --prefix=/home/xxx/arm_openssl --cross-compile-prefix=arm-linux-gnueabihf-

修改Makefile
@ vim Makefile

搜索并将-m64删除

编译
@ make -j4

安装
@ make install

4、Qt交叉编译

4.1 下载Qt5.9.9源码

https://download.qt.io/archive/qt/5.9/5.9.9/single/下载Qt5.9.9源码

4.2 配置编译
 

解压qt源码包
$ tar xvf qt-everywhere-opensource-src-5.9.9.tar.xz

进入到源码目录
$ cd qt-everywhere-opensource-src-5.9.9

4.2.1 配置qtbase/mkspecs/qmake.conf文件

#
# qmake configuration for building with arm-linux-gnueabihf-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

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

QMAKE_INCDIR += /opt/arm_sqlite/include   #已编译的sqlite头文件路径
QMAKE_LIBDIR += /opt/arm_sqlite/lib       #已编译的sqlite库路径

QMAKE_INCDIR += /home/wzl/arm_openssl/include   #已编译的openssl头文件路径
QMAKE_LIBDIR += /home/wzl/arm_openssl/lib       #已编译的openssl库路径

# 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.2.1 编写构建脚本

$ vim build.sh

内容如下:
#!/bin/sh
./configure \
-v \
-prefix /home/wzl/workspace/Arm_Qt5.9.4 \
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-sqlite \
-qt-zlib \
-openssl-linked \
-no-sse2 \
-no-openssl \
-opengl es2 \
-no-cups \
-no-glib \
-no-iconv \
-no-pkg-config \
-no-separate-debug-info \
-skip qt3d \
-skip qtcanvas3d \
-skip qtdoc \
-skip qtwayland
exit

4.2.3 编译

配置执行权限
$ sudo chmod 777 build.sh

$ ./build.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1482687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Docker 部署 Fiora 在线聊天室平台

一、Fiora 介绍 Fiora 简介 Fiora 是一款开源免费的在线聊天系统。 GitHub:https://github.com/yinxin630/fiora Fiora 功能 注册账号并登录,可以长久保存你的数据加入现有群组或者创建自己的群组,来和大家交流和任意人私聊,并添…

Cocos Creator 3.8.x 后效处理(前向渲染)

关于怎么开启后效效果我这里不再赘述,可以前往Cocos官方文档查看具体细节:后效处理官网 下面讲一下怎么自己定义一个后处理效果,想添加自己的后效处理的话只需要在postProcess节点下添加一个BlitScreen 组件即可,然后自己去添加自…

ElasticSearch搜索引擎使用指南

一、ES数据基础类型 1、数据类型 字符串 主要包括: text和keyword两种类型,keyword代表精确值不会参与分词,text类型的字符串会参与分词处理 数值 包括: long, integer, short, byte, double, float 布尔值 boolean 时间 date 数组 数组类型不…

div在vue的组件之中如何设置这个字体的颜色和样式大小

在Vue组件中设置<div>的字体颜色和样式大小可以通过两种主要方式实现&#xff1a;通过内联样式&#xff08;inline styles&#xff09;或者通过CSS类&#xff08;CSS classes&#xff09;。 使用内联样式 在Vue模板中直接在元素上使用style属性来设置样式。这种方法适用…

2024年春招小红书前端实习面试题分享

文章目录 导文面试重点一、方便介绍一下&#xff0c;你之前实习都做了什么嘛&#xff1f;二、 可以讲一下封装组件相关逻辑嘛&#xff1f;1. 为什么要封装组件&#xff1f;2. 封装组件的步骤3. 封装组件的原则4. 组件的复用和扩展5. 组件的维护和文档 三、项目的性能优化你有什…

Apache Echarts介绍与入门

介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;https://echarts.apache.org/zh/index.html 入门案例 Apache Echarts官方提供的快…

大数据智能化-长视频领域

随着数字化时代的到来&#xff0c;长视频领域的发展迎来了新的机遇和挑战。在这一背景下&#xff0c;大数据智能化技术的应用成为长视频行业提升用户体验、优化运营管理的重要手段之一。本文将从优爱腾3大长视频背景需求出发&#xff0c;分析静态资源CDN、视频文件存储与分发、…

midjourney提示词语法

更高级的提示可以包括一个或多个图像URL、多个文本短语和一个或更多个参数 Image Prompts 可以将图像URL添加到提示中&#xff0c;以影响最终结果的样式和内容。图像URL总是位于提示的前面。 https://docs.midjourney.com/image-prompts Text Prompt 要生成的图像的文本描述。…

[法规规划]国家数据局局长刘烈宏《激活数据要素价值》演讲要点解析

国家数据局党组书记、局长刘烈宏在北大光华论坛上发表了题为《激活数据要素价值》的演讲&#xff0c;当时曾极大推动了市场热度&#xff0c;引发了行业思考。现在演讲过去了一段时间&#xff0c;但是温故而知新&#xff0c;我们不妨结合演讲之后的市场反应&#xff0c;回顾一下…

Redis的主从搭建

1.准备两台机器&#xff0c;安装好redis 2.修改从服务器的redis配置 slaveof <masterip> <masterport>两个参数 masterip 主的ip 主的端口号 masterport 3. 启动redis 1.先启动主机redis 2.再启用从机redis 主机redis日志打印 从机redis 日志打印

有序数组二分查找

#include <stdio.h>//二分查找 int binary_search(int arr[],int k,int n){int low 0;int high n - 1;int mid 0;while(low < high){mid (low high) / 2;if(arr[mid] > k)high mid - 1;else if(arr[mid] < k)low mid 1;else return mid;}if(low > hi…

Tomcat服务部署、优化

一 Tomcat的基本介绍 Tomcat概念 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试 JSP 程序的首选。 当在一台机器上配置好Apache 服务器…

Ubuntu Mysql Innodb cluster集群搭建+MaxScale负载均衡(读写分离)

Ubuntu系统版本 20.04.3 LTS (Focal Fossa) 、64位系统。 cat /etc/os-release查看Ubuntu系统是32位还是64位 uname -m如果显示“i686”,则表示安装了32位操作系统。如果显示“x86_64”,则表示安装了64位操作系统。 一、安装MySql 参考: https://blog.csdn.net/qq_3712…

【Datawhale组队学习:Sora原理与技术实战】Sora技术原理

Sora能力边界探索 最大支持60秒高清视频生成&#xff0c;以及基于已有短视频的前后扩展&#xff0c;同时保持人物/场景的高度一致性如奶茶般丝滑过渡的视频融合能力同一场景的多角度/镜头的生成能力具有动态摄像机运动的视频。随着摄像机的移动和旋转&#xff0c;人和其 他场景…

JVM相关面试题(2024大厂高频面试题系列)

一、JVM的组成 1、JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 回答&#xff1a;在JVM中共有四大部分&#xff0c;分别是Class Loader&#xff08;类加载器&#xff09;、Runtime Data Area&#xff08;运行时数据区&#xff0c;内存分区&#xff09;、Execut…

mybatisPlus中 Mapper层以及Service层的方法 整理分类 以及代码实操

MyBatis-Plus是一个基于MyBatis的增强工具&#xff0c;旨在简化开发、提高效率。它提供了通用的mapper和service&#xff0c;可以在不编写任何SQL语句的情况下&#xff0c;快速实现对单表的CRUD、批量、逻辑删除、分页等操作。 功能代码测试前提&#xff1a; 需要对mybatisPl…

【重要公告】对BSV警报系统AS的释义

​​发表时间&#xff1a;2024年2月15日 由BSV区块链协会开发并管理的BSV警报系统&#xff08;Alert System&#xff0c;以下简称“AS”&#xff09;是BSV网络的重要组件。它是一个复杂的系统&#xff0c;主要职能是在BSV区块链网络内发布信息。这些信息通常与网络访问规则NAR相…

java数据结构与算法刷题-----LeetCode572. 另一棵树的子树(经典题,树字符串化KMP)

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力求解&#xff0c;深度优先2. KMP算法进行串匹配 1. 暴力求…

Spring-web-Mvc

文章目录 目录 文章目录 前言 1 . 什么是Spring MVC? 1.1 MVC定义 1.2 主要作用 2. Spring MVC 接受响应数据 2.1 RequestMapping注解配置访问路径 2.2 请求 2.2.1 传递单个参数 2.2.2 传递多个参数 2.2.3 传递对象 2.2.4 后端参数重命名&#xff08;后端参数映射…

Linux技巧|centos7|重新认识和学习egrep和grep命令

前言&#xff1a; 相信提高文本检索工具&#xff0c;大家脑海里肯定有很多工具会自动跳出来&#xff0c;比如&#xff0c;grep&#xff0c;egrep&#xff0c;sed&#xff0c;cat&#xff0c;more&#xff0c;less&#xff0c;cut&#xff0c;awk&#xff0c;vim&#xff0c;vi…