G6818开发环境搭建-Qt5.5.1交叉编译

基于GEC6818开发板(s5p6818)移植64位linux系统-总体概述 弃用旧的粤嵌开发板的内核和根文件系统,移植使用友善之臂friendlyelec Smart6818等开发板上使用的64位系统(内核版本为4.4,ubuntu根文件系统),使用新的资料才能让板子恢复学习的意义。主要工作为LCD、网卡等外设驱动的移植,以及应用层64位嵌入式Qt的移植(并使用OpenGL显卡进行硬件加速) 阅读详情

目录

前言

最近总是各种开发环境的搭建,发现不同的Qt5版本的交叉编译会随着交叉编译工具链、Qt5本身版本等问题出现不一样的错误。我在编译Qt5.5.1的时候原来使用arm-eabi-c++编译出错,但是换成arm-linux-gnueabihf-c++configure就成功了!!!浪费了一整天,还好有hlr大神指导,一天都喂狗了!所以交叉编译也是一个大坑!!!

Qt5.5.1下载地址

Qt下载地址

Qt5.5.1解压缩

这次发现有一种新的压缩格式***.tar.xz,压缩率很高,附上解压缩的方法:

unxz qt-everywhere-opensource-src-5.5.1.tar.xz
tar xf qt-everywhere-opensource-src-5.5.1.tar -C /opt/xxx/

注:.tar.xz的解压需要两步;-C /opt/xxx用于指定解压目录
有时间要总结一下Ubuntu下的常用命令,省得每次都要四处百度。

Qt5.5.1的G6818版本交叉编译

Qt5.5.1的交叉编译环境

Linux:Ubuntu16.04
CrossCompile:gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar

Qt5.5.1编译选项参考

本以为不同的Qt5版本的编译选项会是一样的,但是实际上我发现有些编译选项是不一样的,这里列出我发现的几个不同的编译选项的写法。
-c++11和-no-c++11:
默认是编译c++11的,但是在Qt5.6.2中选项是这样的:-c++std <edition>
配置过程参考Ubuntu下Qt5.6.2开发环境搭建
编译选项如下:

./configure  -prefix /opt/qt5.5.1-grape\
    -v  \
    -opensource \
    -confirm-license    \ 
    -release    \
    -shared  \
    -accessibility \
    -c++11 \
    -xplatform linux-arm-6818-g++ \
    -qpa linuxfb \
    -linuxfb \
    -qreal float \
    -pch \
    -qt-zlib \
    -qt-libjpeg \
    -qt-libpng \
    -qt-freetype \
    -no-sse2 \
    -no-largefile \
    -no-qml-debug \
    -no-gtkstyle \
    -no-opengl \
    -no-openssl \
    -no-iconv  \   # 不加会出现:iconv_open failed
    -nomake tools \
    -nomake examples \
    -skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland

执行成功:
make:


出现错误1:

painting/qpdf.cpp:2160:41: error: ambiguous overload for ‘operator<<’ (operand types are ‘QPdf::ByteStream’ and ‘double’)
         "/Coords [" << p0.x() << p0.y() << r0 << p1.x() << p1.y() << r1 << "]\n"

解决方法1:进入qt-everywhere-opensource-src-5.5.1\qtbase\src\gui\painting\qpdf.cpp
注释掉2154行如下内容

#if 0
    s << "<<\n"
        "/ShadingType 3\n"
        "/ColorSpace " << (alpha ? "/DeviceGray\n" : "/DeviceRGB\n") <<
        "/AntiAlias true\n"
        "/Domain [0 1]\n"
        "/Coords [" << p0.x() << p0.y() << r0 << p1.x() << p1.y() << r1 << "]\n"
        "/Extend [true true]\n"
        "/Function " << function << "0 R\n"
        ">>\n"
        "endobj\n";
#endif

出现错误2:

./wtf/unicode/wchar/UnicodeWchar.h: In function ‘bool WTF::Unicode::isAlphanumeric(UChar)’:
./wtf/unicode/wchar/UnicodeWchar.h:136:58: error: ‘iswalnum’ was not declared in this scope
 inline bool isAlphanumeric(UChar c) { return !!iswalnum(c); }
                                                          ^
./wtf/unicode/wchar/UnicodeWchar.h: In function ‘bool WTF::Unicode::isDigit(UChar)’:
./wtf/unicode/wchar/UnicodeWchar.h:137:51: error: ‘iswdigit’ was not declared in this scope
 inline bool isDigit(UChar c) { return !!iswdigit(c); }
                                                   ^
./wtf/unicode/wchar/UnicodeWchar.h: In function ‘bool WTF::Unicode::isLetter(UChar)’:
./wtf/unicode/wchar/UnicodeWchar.h:138:52: error: ‘iswalpha’ was not declared in this scope
 inline bool isLetter(UChar c) { return !!iswalpha(c); }
                                                    ^
./wtf/unicode/wchar/UnicodeWchar.h: In function ‘bool WTF::Unicode::isLower(UChar)’:
./wtf/unicode/wchar/UnicodeWchar.h:139:51: error: ‘iswlower’ was not declared in this scope
 inline bool isLower(UChar c) { return !!iswlower(c); }
                                                   ^
./wtf/unicode/wchar/UnicodeWchar.h: In function ‘bool WTF::Unicode::isPrintableChar(UChar)’:
./wtf/unicode/wchar/UnicodeWchar.h:140:59: error: ‘iswprint’ was not declared in this scope
 inline bool isPrintableChar(UChar c) { return !!iswprint(c); }
                                                           ^
./wtf/unicode/wchar/UnicodeWchar.h: In function ‘bool WTF::Unicode::isPunct(UChar)’:
./wtf/unicode/wchar/UnicodeWchar.h:141:51: error: ‘iswpunct’ was not declared in this scope
 inline bool isPunct(UChar c) { return !!iswpunct(c); }

解决方法:vi qtwebkit/Source/WTF/wtf/unicode/wchar/UnicodeWchar.h
第32行

 #ifndef ANDROID
 # include <wchar.h>
  typedef wchar_t UChar;
 #else
  typedef unsigned short int UChar;
 #endif

修改为:

#ifndef ANDROID
#include <wctype.h>
typedef unsigned short int UChar;
//# include <wchar.h>
// typedef wchar_t UChar;
#else                                                                                                 
 typedef unsigned short int UChar;
#endif

使用arm-eabi-gcc的配置错误

因为我编译的Qt版本比较高,但是使用的arm-eabi-gcc的版本较低,所以在配置的时候就会出现错误,下面附上配置时的错误信息,解决方法可以尝试一下用更高版本的交叉编译工具链。
错误信息:

collect2: fatal error: cannot find 'ld'
compilation terminated.
/grapeRain/g6818_linux/gcc/linux-x86/arm/arm-eabi-4.8/bin/../lib/gcc/arm-eabi/4.8/../../../../arm-eabi/bin/ld: cannot find crt0.o: 没有那个文件或目录
/grapeRain/g6818_linux/gcc/linux-x86/arm/arm-eabi-4.8/bin/../lib/gcc/arm-eabi/4.8/../../../../arm-eabi/bin/ld: cannot find -lstdc++
/grapeRain/g6818_linux/gcc/linux-x86/arm/arm-eabi-4.8/bin/../lib/gcc/arm-eabi/4.8/../../../../arm-eabi/bin/ld: cannot find -lm
/grapeRain/g6818_linux/gcc/linux-x86/arm/arm-eabi-4.8/bin/../lib/gcc/arm-eabi/4.8/../../../../arm-eabi/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status

运行时错误1:

QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

解决方法:在配置选项中加入-no-iconv

tslib-1.4的交叉编译

编译

  • 下载tslib-1.4.tar.gz
  • 解压
  • 执行./autogen.sh’
    出现错误:./autogen.sh: 4: ./autogen.sh: autoreconf: not found
    解决方法:sudo apt-get install autoconf automake libtool
  • echo “ac_cv_func_malloc_0_nonnull=yes”>arm-linux.cache
  • mkdir /opt/tslib
  • ./configure –prefix=/opt/tslib –host=arm-linux-gnueabihf –cache-file=arm-linux.cache
  • make
  • make install

导出环境变量

export TSLIB_ROOT=/opt/tslib
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal
export TSLIB_TSDEVICE=/dev/input/mouse2
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export LD_LIBRARY_PATH=/lib:/usr/lib:$TSLIB_ROOT/lib
export TS_INFO_FILE=/sys/class/input/mouse2/uevent

执行tslib/bin目录下的测试文件

出现错误:

No raw modules loaded.
Ts_config: No such file or directory

解决方法:

vi etc/ts.conf 
打开module raw input的注释

参考链接1
参考链接2

总结

Qt的版本不同,交叉编译选项也不同,同时注意不要使用低版本的交叉编译工具链去编译高版本的Qt,这样就会出现许多莫名其妙,百度一天都无法解决的问题,以后要逐步学会使用google!

ARM-Linux交叉编译环境搭建与Qt项目移植实战 本文详细介绍了ARM-Linux交叉编译环境的搭建步骤,重点讲解了Qt库的编译配置与Qt Creator的交叉编译环境设置。通过实战案例演示了如何将Qt项目成功移植到6818开发板,并提供了常见问题的调试与解决方法,帮助开发者高效完成嵌入式Qt应用开发。 阅读详情

相关推荐

Qt应用从零到ARM-Linux:6818开发板移植实战

本文详细介绍了将Qt应用移植到ARM-Linux平台的全过程,重点讲解了在6818开发板上进行交叉编译的环境配置、工具链安装、Qt库配置及项目部署。通过实战步骤帮助开发者掌握从x86到ARM架构的项目移植技巧,解决常见问题并优化应用性能。

play7的博客 893

6818开发板Qt编译环境配置

将交叉编译工具包放到用户目录下解压:tar -xf arm-linux-gnueabi-5.4.0.tar.xz解压后的目录进入解压目录存放编译命令的路径,输入pwd获取arm-linux-g++的路径名,保存下来,后续要用同理,还有编译依赖的库文件路径也要保存,后续要用配置环境变量(需要root权限)进入/etc/bash.bashrc,在最后面添加这两句,一个是编译命令的路径,一个是依赖库的路径,前两步已经保存好了export PATH=/home/yan/usr/local/arm/5.4.0/us

weixin_49723592的博客 879

基于GEC6818与QT5.14.2的智能点餐系统开发实战

本文详细介绍了基于GEC6818开发板和QT5.14.2框架的智能点餐系统开发实战。内容涵盖环境搭建、硬件平台解析、系统架构设计、用户界面实现及核心功能模块开发,重点分享了使用C++和QT进行嵌入式GUI开发的性能优化与调试技巧,为开发高性能点餐系统提供完整解决方案。

java5的博客 716

交叉编译Qt5.15.2并移植到GEC6818

主机环境:Ubuntu20.04虚拟机 交叉工具链:粤嵌提供的arm-linux-gnueabi-5.4.0,一般开发板厂商都会提供相应的工具链 为什么我要自己来交叉编译Qt库,还发毫无技术含量的水贴? 答:第一个问题,因为粤嵌提供的Qt库是5.7版本,且包括qtlocation,multimedia在内的很多模块被裁剪掉了,导致我想移植的程序无法正常交叉编译,更不要说运行;第二个问题:本人属于啥都不会的菜鸡,很多步骤即使做完了也不明白原理,过一段时间就忘记该咋操作,故发帖记录下步骤,以防未来还要

qq_42288262的博客 7505

GEC6818开发板从零配置到实战:手把手教你搭建Linux开发环境(含常见问题解决)

本文详细介绍了GEC6818开发板从零配置到实战的全过程,包括硬件准备、Linux开发环境搭建、系统移植、外设驱动开发及高级功能实现。通过手把手教程和常见问题解决方案,帮助开发者快速掌握GEC6818开发板的配置与应用,适用于嵌入式Linux和Android开发场景。

9o8p7i6u5y的博客 586

从GEC6818到Smart6818:手把手教你移植友善之臂64位Ubuntu系统(内核4.4)

本文详细介绍了如何将GEC6818开发板从32位系统升级到64位Ubuntu系统,涵盖uboot移植、内核配置、Qt环境搭建等关键步骤。通过s5p6818处理器的优化配置和OpenGL硬件加速,使老旧开发板焕发新生,适合嵌入式开发者进行系统移植和性能优化。

weixin_33738555的博客 461

qt5.5.1 移植4412的问题过程

1、编译错误: ../WTF/wtf/unicode/wchar/UnicodeWchar.h: In function 'bool WTF::Unicode::isAlphanumeric(UChar)': ../WTF/wtf/unicode/wchar/UnicodeWchar.h:136:58: error: 'iswalnum' was not declared in this sc...

weixin_30896763的博客 310

GEC6818开发板二手捡漏指南:如何用最低成本玩转64位Linux系统移植

本文详细介绍了如何通过二手GEC6818开发板低成本学习64位Linux系统移植。从淘货验机到系统移植全流程,包括uboot修改、Linux内核适配和Qt5硬件加速编译,帮助开发者以最低成本掌握嵌入式开发核心技能。

weixin_30335575的博客 422

linux编译qt4.8.6,【QT学习】S5P6818交叉编译QT4.8.6

(一)下载qt4.8.6源码(二)配置编译平台进入qt-everywhere-opensource-src-4.8.6/mkspecs/qws目录,新建arm-cortex_a9-linux-gnueabi-g++目录,复制linux-arm-g++目录下的所有文件到arm-cortex_a9-linux-gnueabi-g++mkdir -parm-cortex_a9-linux-gnueabi...

weixin_32127545的博客 601

Vue集成天地图:从定位到交互绘图的完整实践指南

本文详细介绍了如何在Vue项目中集成天地图API,从基础配置到高级功能实现,包括定位、标点、画线等交互绘图功能。通过实战代码示例和性能优化技巧,帮助开发者快速掌握Vue与天地图的结合应用,提升地图开发效率。

weixin_29013129的博客 248

2023年5月青少年软件编程Python等级考试四级真题(含答案和解析)

电子学会,2023年5月,青少年软件编程,Python等级考试,四级真题(含答案和解析)

m0_37554648的博客 904

交叉编译Qt5.5.1----本人亲自测试基本可行!!!

原文地址::https://blog.csdn.net/jzzy_hony/article/details/81141481 准备 主机平台:Ubuntu 16.04 LTS(x64) 目标平台:ARM40-A5D3 Qt版本:Qt5.5.1 tslib github sqlite3 ARM-GCC编译工具链:gcc-linaro-4.9.4-2017.01-x86_64_arm-linu...

xqhrs232的专栏 776

CST新手必看:共面波导色散曲线绘制全流程(附参数设置避坑指南)

本文详细介绍了CST Microwave Studio中绘制共面波导色散曲线的全流程操作,特别针对新手常见的边界条件设置错误、参数扫描失效等问题提供解决方案。通过模型建立、边界条件设置、本征模求解器配置等步骤,帮助工程师快速掌握CPW色散特性分析方法,并附有参数设置避坑指南,提升高频电路设计效率。

tomato的博客 990

第六天:Ubuntu18.04和GEC6818开发板中安装QT环境,Ubuntu18.04中 QtCreator配置交叉编译(arm-kit工具套件)以及qt简介和第一个程序创建

Ubuntu18.04和GEC6818开发板中安装QT环境,Ubuntu18.04中 QtCreator配置交叉编译(arm-kit工具套件)以及qt简介和第一个程序创建

xqmids99的博客 1787

PyTorch、Torchvision、Torchaudio历史版本whl文件下载地址、版本对应关系与离线安装全攻略

本文详细解析了PyTorch、Torchvision和Torchaudio历史版本whl文件的下载地址、版本对应关系及离线安装全攻略。针对无网络环境下的安装挑战,提供了官方whl文件获取路径、版本匹配技巧和完整安装流程,帮助开发者高效解决兼容性问题,确保深度学习环境的稳定部署。

weixin_31960565的博客 378

windows 配置 libxml2

路径:\libiconv-1.9.2-1-src.zip\src\libiconv\1.9.2\libiconv-1.9.2\include\。执行完后,在当前win32目录中会生成了一个bin.msvc目录,其中就有开发需要的libxml2.lib和libxml2.dll文件。将 libiconv.la 复制到 新建的 lib 目录,并将其改名为 iconv.lib。路径:libiconv-1.9.2-1-bin.zip\lib\。将如下的 iconv.h 复制到新建的 include 目录。

SHELLCODE_8BIT的博客 3886

ubuntu 22.04使用arm-linux-gnueabi交叉编译qt5.15.2源码(完整版)

本文详细介绍了从安装虚拟机到交叉编译的详细过程,文章有点长讲的比较细,如果只是交叉编译,有些注释了非必要的地方可以先跳过。

weixin_64319089的博客 5013

Spring AI从入门到精通:构建智能Spring应用的全面指南

随着人工智能技术的快速发展,将大语言模型(LLM)与企业应用集成已成为趋势。Spring AI作为Spring官方推出的AI集成框架,为开发者提供了便捷、标准化的方式来构建智能应用。本文将从基础概念到高级应用,全面介绍Spring AI的核心功能与实践技巧。Spring AI 是 VMware 于 2023 年推出的开源框架,旨在简化大语言模型(LLM)与 Spring 应用的集成。它提供了统一的 API 抽象,支持多种 LLM 供应商,包括 OpenAI、Azure OpenAI、Hugging Face

qq_36929638的博客 1069

【QT】基于C++的一卡通贩卖机系统

文章目录1 项目描述2 项目需求3 搭建环境4 技术描述 1 项目描述 本次项目是基于Qt Creator实现编程,通过交叉编译arm-linux-g++,生成能够在GEC6818arm开发板上运行的文件…利用链表存取账户信息(姓名,性别,卡号,余额,账号,密码),通过QT中的多种控件制作界面UI,实现一个可多用户登录,能够购买不同类别产品,信息查看,充值的一卡通贩卖机系统… 2 项目需求 实现...

zhong_senvi的博客 3639

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3274

深入理解JVM虚拟机第一篇:Java跨平台和字节码以及多语言混合编程

本位描述了Java的跨平台和JVM的跨平台的作用,Java语言的字节码的概念多语言混合编程应用到JVM虚拟机以及Java发展的重大事件。

七叔的博客 1万+

迅为6818/4418开发板Yocto开发指南

迅为6818/4418开发板新增Yocto系统,并支持支持QML、OpenGL ES2.0、Web浏览器、gstreamer。 iTOP-4418 和 iTOP-6818 的 yocto 系统使用了 Linux4.4 版本的内核(设备树系统),源码可编译出 Qt5.4, Qt5.6,Qt5.8,Qt5.9 多个版本的 Qt 文件系统,Qt 使用了 eglfs 显示,支持 GPU 加速,能够运行 QML,Q3D 程序;文件系统中集成了 gstreamer,可调用 VPU 进行硬件编解码。 28.1 修改

Chihiro_S的专栏 1680

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

QT5.14.2与SecureCRT:点餐系统开发中的工具链隐形战争

本文探讨了在嵌入式点餐系统开发中,如何高效整合QT5.14.2与SecureCRT工具链。通过QT5.14.2实现GUI界面开发与多语言支持,结合SecureCRT进行串口调试与自动化部署,显著提升开发效率和系统稳定性,为GEC6818平台上的C++应用开发提供完整解决方案。

web99的专栏 448

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

虚拟机中Ubuntu16.04与Arm开发板实现交叉编译

经过几天摸爬滚打,终于在高人的指导下完成了。所以写篇文章记录一下,方便以后参考。文中可能涉及到一些不详细甚至不正确的地方,因为很多地方我也不懂,只是照着网上的教程照做。 开发板型号为NanoPC-T3 Plus,采用三星八核Cortex-A53主控S5P6818,已安装友善之臂官方推荐的FriendlyCore轻量linux系统。 第一步:在虚拟机中配置交叉编译环境 1. 安装交叉编译器 基本...

noscallion的博客 990

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OpenCV 3.4.1 ARM交叉编译实战指南:从环境搭建到QT摄像头测试

本文详细介绍了在Ubuntu环境下为ARM架构开发板交叉编译OpenCV 3.4.1的完整实战流程。内容涵盖从环境准备、依赖安装、交叉编译器配置,到使用CMake进行核心编译与扩展模块(opencv_contrib)的集成,并最终通过一个QT摄像头测试程序验证编译成果。文章重点解析了配置过程中的关键参数(如CMAKE_SYSTEM_NAME)和常见错误的解决方案,旨在帮助开发者高效完成OpenCV的ARM交叉编译部署。

desk3的博客 637

Qt5.3.1交叉编译arm版本方法

写出这篇文章,也是在我花了2天折腾之后,解决问题之后才写的。因为我之前的开发板里面的Qt4.7.4是在64位ubuntu14.04下面编译的,但是在虚拟机下面,摄像头打不开。我最近的项目就是围绕摄像头的,那就只能在ubuntu10.10下面可以使用摄像头了,但是ubuntu10.10我用的又是32位的版本。所以我必须编译一个32位的Qt的ARM版本出来。 这两天真的是搞死我了,看了几百篇

honami520的专栏 1251
上一篇: Ubuntu16.04下设置桥接的方法
下一篇: ubuntu和arm开发板设置静态ip
simonXi-tech
博客等级 码龄10年 398粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值