c++ qt5范例开发大全_使用yocto工具编译qt5.9.6总结

运行平台:OKMX6DL-C

编译平台:Ubuntu 14.04.6 LTS

编译工具:arm-poky-linux-gnueabi-gcc(gcc version 5.3.0 (GCC) )

qt源码:qt-everywhere-opensource-src-5.9.6.tar.xz

参考:

嵌入式开发之Qt-5.9.6交叉编译(带WebEngine)

QT官网关于交叉编译说明

g++: internal compiler error: Killed (program cc1plus) 解决办法

第4篇 交叉编译Qt 5.4.0

安装 SDK:

资料:飞凌开发板提供的OKMX6X-C_Linux4.1.15 用户资料Linux工具fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh

(1)将fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh拷贝到虚拟机任意目录 ,执行:

./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh

默认将会安装到/opt/fsl-imx-x11/目录下(这里安装到了/opt/fsl-imx-x11/4.1.15-2.1.0/)。

安装完成后 /opt/fsl-imx-x11/4.1.15-2.1.0/ 目录结构如下:

lin@ubuntu:/opt/lin$ ls
environment-setup-cortexa9hf-neon-poky-linux-gnueabisite-config-cortexa9hf-neon-poky-linux-gnueabi
sysroots
version-cortexa9hf-neon-poky-linux-gnueabi

environment-setup-cortexa9hf-neon-poky-linux-gnueabisite-config-cortexa9hf-neon-poky-linux-gnueabi 是环境初始化脚本。

(2)环境变量(注意空格):

. /opt/lin/environment-setup-cortexa9hf-neon-poky-linux-gnueabisite-config-cortexa9hf-neon-poky-linux-gnueabi

(3)译器是否安装成功:

 arm-poky-linux-gnueabi-gcc  -v 

安装依赖库

sudo apt-get install gcc-multilib g+±multilib

sudo apt install pkg-config

sudo apt install pkgconf

解压qt源码

$ xz -d  qt-everywhere-opensource-src-5.9.6.tar.xz         #解压文件      
$ tar xvf qt-everywhere-opensource-src-5.9.6.tar

删除旧版Qt

需要着重注意sysroot对应的cortexa9hf-neon-poky-linux-gnueabi目录下存在之前编译的旧Qt版本的动态库,必须进行清除操作,否则将会影响新版本Qt的编译。

cd /opt/lin/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib$
sudo rm .libQt* -rf
sudo rm lib/qt5 -rf

创建配置脚本

#!/bin/bash
sudo ./configure -v -opensource -confirm-license -sysroot /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi -no-gcc-sysroot -prefix /usr/local/Qt-5.9.6 -device linux-imx6-g++ -device-option CROSS_COMPILE=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- -release -shared -make libs -verbose -no-pch  -no-rpath -pkg-config -accessibility -no-alsa -icu -dbus -no-glib -no-directfb -eglfs -no-kms -linuxfb -xcb -xcb-xlib -evdev -no-libinput -xinput2 -no-tslib -libudev -no-mtdev -nomake examples -nomake tests -fontconfig -no-opengl -opengl es2 -egl -no-openvg -system-zlib -system-libjpeg -system-libpng -system-xcb -openssl-linked -qt-pcre -pulseaudio -no-sm -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds -widgets -xkb

修改qtbase/mkspecs/devices/linux-imx6-g++/qmake.conf

#
# qmake configuration for the Freescale iMX6 boards (single, dual and quad)
#
# The configuration below is set up for running with EGL on the framebuffer via
# the eglfs platform plugin and its eglfs_viv backend.# Wayland is also fully functional out of the box. However, when writing Wayland
# *compositors* with Qt, the eglfs backend will have to be switched to
# eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment variable.
#
# Below is an example configure line that assumes the SDK is in
# $HOME/imx6/toolchain. On device Qt is expected to be placed under
# /usr/local/qt5 whereas on the host 'make install' will copy the host tools and
# the target libraries to $HOME/imx6/qt5.
#
# ./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ 
#   -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- 
#   -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi 
#   -nomake examples -nomake tests -v
#include(../common/linux_device_pre.conf)QMAKE_LIBS_EGL         += -lEGL
QMAKE_LIBS_OPENGL_ES2  += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG      += -lOpenVG -lEGL -lGALIMX6_CFLAGS             = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS           += $$IMX6_CFLAGS
QMAKE_CXXFLAGS         += $$IMX6_CFLAGSDISTRO_OPTS += hard-floatDBUS_LIBS               = -L/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib-ldbus-1# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_vivQMAKE_INCDIR_OPENGL_ES2 = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/include
QMAKE_LIBDIR_OPENGL_ES2 = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/lib
QMAKE_INCDIR_EGL = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/include
QMAKE_LIBDIR_EGL = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/libinclude(../common/linux_arm_device_post.conf)# modifications to g++.conf
QMAKE_CC                = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc -march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi
QMAKE_CXX               = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi
QMAKE_LINK              = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi
QMAKE_LINK_SHLIB        = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ --sysroot= /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi# modifications to linux.conf
QMAKE_AR                = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-objcopy
QMAKE_NM                = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-nm -P
QMAKE_STRIP             = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-stripload(qt_config)

gpu库

至此EGLFS i.Mx6的支持是无法开启的,原因为sysroot中的EGL依赖库不是GPU版本,必须使用官方提供的GPU版本。gpu-viv-bin-mx6q-3.10.17-1.0.0.tar.gz

1fc25dd3e78897c64474de927f83141c.png
tar  xvzf  gpu-viv-bin-mx6q-3.10.17-1.0.0.tar.gz 

解压完成后进入gpu-viv-bin-mx6q-3.10.17-1.0.0目录,该目录中有以下内容: 其中hardfp中的内容是我们需要的。把hardfp目录下的usr/lib/和include文件替换sysroot目录下的usr/lib 和usr/include中的文件,此目录是自己定义的,读者可以拷贝到其它目录下,只需要在后边修改Qt的编译配置文件的时候设置正确就可以了。~

a6d361ac5c16880b13c0175fb00bfbdf.png

sudo make

许久之后。。。

好久好久以后。。。

sudo make install

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

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

相关文章

Android堆栈分析

在开发中,与界面跳转联系比较紧密的概念是Task(任务)和Back Stack(回退栈)。activity的启动模式会影响Task和Back Stack的状态, 进而影响用户体验。除了启动模式之外,Intent类中定义的一些标志&…

如何写一篇MBA论文-涉及matlab建模

如何写一篇MBA论文? 知乎 19 个回答方向,具体一点,不要太大。战略管理、薪酬管理、绩效考核、营销管理,客户关系管理、供应链管理、供应商选择与评价,库存问题。。论文模式第1章:绪论第2章:现状…

什么电脑的牌子好用_扬州诚招电动牙刷代理有什么牌子比较好用

扬州诚招电动牙刷代理有什么牌子比较好用,珈蓝电器实惠物美,为人类口腔事业的发展再创新贡献。扬州诚招电动牙刷代理有什么牌子比较好用, 很多人说电动牙刷是懒人神器, 但偷懒可以,口腔清洁效果可不能因此打折。电动牙…

360浏览器打不开网页_苹果移动端、PC端safari浏览器打不开网页的解决方案!

你还在为苹果自带的safari浏览器打不开网页而苦恼吗,接下来的答案会帮助你解决苦恼。苹果自带safari浏览器的设备分为两种:移动端、PC端。因此不同设备出现safari浏览器打不开网页的情况需要具体问题具体分析。最简单的问题往往最容易被我们忽视&#xf…

台式电脑如何截屏_买台式电脑如何避免成为被宰羔羊(一)

台式电脑的优点是很多的,比如价格便宜(和游戏本比起来),比如性能发挥稳定(因为不受限于散热),比如屏幕大看起来更舒服。但是和笔记本比起来,台式的水就非常深了,无论是线下实体店,还是线上网店,…

n型半导体和p型半导体的区别_VNX系列大流量工业型膜堆, 为半导体等行业提供超纯水!...

自20世纪80年代以来,IONPURE始终以为广泛的应用提供最优质的电化学解决方案延续着它的领导地位。IONPURE持续创新,于2004年推出了VNX 系列大流量CEDI膜堆,单个膜堆的名义产水流量最大可达12.5m3/h。IONPURE于2018年推出了单个膜堆的名义产水流…

属于db模式缺点的是什么_详解 Seata Golang 客户端 AT 模式及其使用

源码:point_down: seata-golang概述我们知道 Seata Java Client 的 AT 模式,通过代理数据源,实现了对业务代码无侵入的分布式事务协调机制,将与 Transaction Coordinator (TC) 交互的逻辑、Commit 的逻辑、Rollback 的逻辑,隐藏在…

如何在mfc主对话框中再显示子对话框_win10扩展显示器设置方法

使用win10系统的过程中,常常需要对win10系统扩展显示器进行设置。良多对电脑不太认识的用户不知道win10系统扩展显示器到底该如何设置?实在win10系统扩展显示器的设置方法非常简朴,下面小编教你win10扩展显示器设置方法。一些用户使用电脑时需要运行多个…

蓝牙驱动卸载后自动安装_Intel 蓝牙驱动安装教程

前言可能有些人之前没有搞定Intel蓝牙的驱动,今天就把蓝牙的驱动也发一下,实现Intel全家桶的驱动,到处倒腾换网卡也是挺折腾的。所支持的蓝牙IDIntelBluetoothFirmware 是一个用于在 macOS 中启用原生蓝牙的固件上传驱动,固件的二…

cad在线转低版本_为什么别人制图那么快?41个CAD实用技巧,3天轻松玩转CAD

获取更多业界资讯和深度好文● 点击蓝字关注我们 ●点击上方蓝色字体 关注我们我们在使用CAD制图时,总感觉自己的速度非常慢,为什么别人可以那么快的制图呢?今天就给大家分享一些CAD实用技巧,让你3天轻松玩转CAD。一、提高绘图效率…

不同协议的数据包如何处理_【项目申报专员】如何处理各种不同的项目申报工作呢...

前文我们说到了在企业做项目申报专员需要掌握的政策查询,以及申报流程解读工作,今天我给大家来分享在企业如何做好对不同项目的申报工作。说这个问题之前,我们先得了解一些背景知识。在企业做项目申报专员工作意味着什么?意味着事…

jsoup简单的爬取网页数据

/*** Project Name:JavaTest* File Name:BankOfChinaExchangeRate.java* Package Name:com.lee.javatest* Date:2016年7月22日下午1:34:09* Copyright (c) 2016年7月22日, Pwenlee All Rights Reserved.* */package com.lee.javatest;import java.io.Serializable; import java…

sql每个月每个人的花销占比_11月:每个认真生活的人,都值得被认真对待

恍然已11月,风吹枯叶落,落叶生肥土,肥土滋养着果实,果实缓慢而坚定着成长。图片|东海青 摄图片|子夜鸟 摄11月,不要怂这是属木芙蓉的晚秋。花朵娇嫩,它却无所忌惮地美丽着&#xff0…

比较TFS与SVN,你必须知道的10点区别

相比SVN,对于TFS的优点我有以下几点看法,供大家参考: 1. 总体比较: TFS是一个应用软件生命周期管理(ALM)软件,是一个软件研发平台产品,其功能覆盖了软件研发过程中的所有环节&#…

react textarea 空格为什么不换行_你需要的 React + TypeScript 50 条规范和经验

这篇文章没有对错之分,肯定也有不完善的地方,结合了自己日常开发和经验。可以让你书写代码更具严谨性,希望看完之后有所帮助。本文字数4000 ,看完本文大概需半小时。1. 注释(1) 文件顶部的注释,包括描述、作者、日期/** * descrip…

Three.js基础探寻二——正交投影照相机

本篇主要介绍照相机中的正交投影照相机。   第一篇传送门:Three.js基础探寻一 1.照相机 图形学中的照相机定义了三维空间到二维屏幕的投影方式。 针对投影方式照相机分为正交投影照相机和透视投影照相机。 2.两种相机的区别与适用范围 正交投影: 透视投…

centos删除文件夹_等保测评主机安全之centos密码长度

密码长度,作为等级保护主机测评项里中密码复杂度要求之一,是必须要查的。在《等级测评师初级教程》里,对于密码长度的设置指向了/etc/login.defs里的PASS_MIN_LEN字段。# PASS_MIN_LEN Minimum acceptable password length.PASS_MIN_LEN …

Activity的四种启动模式-图文并茂

1、对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示2、当活动的启动模式指…

ajax如何提交多表单的值_25 HTML5表单基本控件(二)

成长是一辈子的事儿!大家好!我是时问新。分享前端、Python等技术,以及个人成长路上的那些事儿。密码框使用标签,把标签上的type属性的值,设置为"password",就可以创建密码框。密码框和单行文本框…