Linux系统编译QT5.15.0及串口问题

news/2024/11/15 13:59:49/文章来源:https://www.cnblogs.com/boring-luobo/p/18546381

编译流程:

1> 下载QT源码
源码的下载可以到qt的官网
http://www.qt.io/download/ 

2> 解压
tar xvf qt-everywhere-src-x.x.x.tar.gz

注意后缀和解压方式

3> 配置
 ./configure 进行环境配制。

4> 编译
执行make编译,时间长,大概在三四个小时左右。

5> 安装
sudo make install
需要5分钟左右

6> 设置环境变量
sudo gedit /etc/profile

QTDIR=/usr/local/Qt-x.x.x{qt实际安装路径}
PATH=PATH
MANPATH=MANPATH
LD_LIBRARY_PATH=LD_LIBRARY_PATH
export QTDIR PATH MANPATHLD_LIBRARY_PATH
然后保存
source /etc/profile 使刚才的环境变量生效。

可以进行测试,

qmake -v

如果环境变量生效会出现:

QMake version 2.01a
Using Qt version 4.8.2 in /usr/local/Trolltech/Qt-xxx/lib

which qmake

会出现:
/usr/local/Trolltech/Qt-4.8.2/bin/qmake

只有设置了环境变量,后面的设置在qtcreator里面的编译器才会生效。
写在配置文件里面的,才能每次使用。

QtCreator 进行编译器设置
在qtcreator里面 Tools->Options->Qt->qmake location:
/usr/local/Trolltech/Qt-x.x.x/bin/qmake //系统默认是安装在这里的
进行编译器qmake设置和默认QT版本选择,然后就可以运行一个小实例了。

 

错误解决:

1. Project ERROR: xcb-xfixes development package not found
make[2]: *** [Makefile:52: sub-virtualkeyboard-make_first] Error 3

sudo apt-get install libxcb-xfixes0-dev libxcb-util-dev

 

2. ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

 

3. ERROR: Feature ‘xcb’ was enabled, but the pre-condition ‘features.thread && features.xkbcommon && libs.xcb’ failed
sudo apt-get install libxkbcommon-x11-dev

4. ERROR: Feature ‘fontconfig’ was enabled, but the pre-condition ‘!config.msvc && features.system-freetype && libs.fontconfig’ failed
sudo apt-get install libfontconfig1-dev

5. Project ERROR: Building QtQml requires Python
sudo apt-get install python3
sudo ln -s /usr/bin/python3 /usr/bin/python

 

6. Project ERROR: Unknown module(s) in QT_PRIVATE:serialport
sudo apt-get install libqt5serialport5 libqt5serialport5-dev

 

7. 打开串口失败(root权限)

可以 帮助-》关于插件 取消勾选ClangCodeModel

 

8. 串口发送大量数据出现丢失(windows平台正常,Linux平台出问题)

serial->waitForBytesWritten(-1)未按预期执行(失效?)
导致部分数据被
serial->clear(QSerialPort::Output )清除。

发送代码:

void serial_object::UpgWrite(uint8_t * buf, uint32_t maxlen)
{QByteArray tbuf;tbuf.resize((int)maxlen);memcpy(tbuf.data(), buf, maxlen);qDebug()<<maxlen;serial->write(tbuf, maxlen);serial->waitForBytesWritten(-1);serial->clear(QSerialPort::Output );  // Linux bug
}

修改后正常:

void serial_object::UpgWrite(uint8_t * buf, uint32_t maxlen)
{QByteArray tbuf;tbuf.resize((int)maxlen);memcpy(tbuf.data(), buf, maxlen);qDebug()<<maxlen;serial->write(tbuf, maxlen);serial->waitForBytesWritten(-1);//serial->clear(QSerialPort::Output );  // Linux bug
}

 

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

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

相关文章

线程状态切换

Java线程控制方法的作用及其区别:start:作用:启动线程,由虚拟机自动调度执行run()方法。 区别:线程处于就绪状态。run:作用:线程逻辑代码块处理,JVM调度执行。 区别:线程处于运行状态。sleep:作用:让当前正在执行的线程休眠(暂停执行)。 区别:不释放锁。wait:作用:…

AI智能检测视频分析网关安全帽检测识别监控解决方案

在当代建筑行业中,保障工人的安全始终是最为紧迫的议题。事故如高空坠落和物体撞击等频繁发生,严重威胁着工人的生命安全。安全帽作为一项基础的个人防护设备,其正确使用对于减轻事故伤害起着至关重要的作用。 不过,依赖传统的人工检查方法不仅效率不高,还可能存在疏漏和错…

制造企业的数字化转型:五款优秀项目管理软件推荐

制造业的生产管理往往涉及复杂的流程和多部门协作,如何确保各环节顺利对接、信息准确传递,是每一家制造企业都在不断优化的问题。面对这些管理难题,越来越多的制造企业引入了项目管理软件,通过直观的任务分配、进度跟踪、数据反馈等功能,极大地提升了生产效率和团队协作质…

React Router 的实现原理

本文分两部分,一说前端路由的基本原理,二说 React Router 的实现原理 前端路由的基本原理​ 不说屁话,从时间线上讲,Web 应用原本是后端渲染,后来随着技术的发展,有了单页面应用,慢慢从后端渲染发展成前端渲染 在博客前端路由hash、history的实现 一问中我已经介绍过这两…

[TJOI2007] 路标设置

[[TJOI2007] 路标设置(https://www.luogu.com.cn/problem/P3853) 题目 B 市和 T 市之间有一条长长的高速公路,公路上相邻路标的最大距离定义为该公路的“空旷指数”。现在公路上增设一些路标,使得公路的“空旷指数”最小。请设计一个程序计算能达到的最小值是多少。请注意,公…

TBM810-ASEMI贴片桥堆8A 1000V

TBM810-ASEMI贴片桥堆8A 1000V编辑:ll TBM810-ASEMI贴片桥堆8A 1000V 型号:TBM810 品牌:ASEMI 封装:TBM-4 特性:贴片桥堆 正向电流:8A 反向耐压:1000V 恢复时间:>2000ns 引脚数量:4 芯片个数:4 芯片尺寸:50MIL 浪涌电流:50A 漏电流:>10uA 工作温度:-55℃~150…

Python开发环境搭建(PyCharm+Anaconda+Git+Gitee)

一、Anaconda介绍 1.1 为什么选择Anaconda? Anaconda是一个开源的Python发行版本,主要用于数据科学和机器学习,它包含了Python、conda以及众多工具和库,让我们可以轻松的构建和管理python虚拟环境,方便的进行python项目开发。下面是选择Anaconda的理由:安装简单方便 便捷…

Visual Studio 快速分析 .NET Dump 文件

前言 在开发和维护 .NET 应用程序的过程中,有时会遇到难以捉摸的性能瓶颈或内存泄漏等问题。这些问题往往发生在生产环境中,难以复现。为了更准确地诊断这些运行时问题,通常会收集应用程序在生产环境中的内存转储文件(.dump 文件)。在这种情况下,分析内存转储文件(.dump…

使用model-viewer加载glb文件

实现效果代码 react项目引入方式可选其一1.在html中引入 <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>npm 或者 yarn安装yarn add @google/model-viewerindex.jsimport React, { …

关于定时器周期、频率等相关计算

1、定时器作为计数器,时钟频率计算如下图: 2、定时器产生一次更新中断时间计算,如下: 当定时器设置为边沿对齐模式和向上计数模式时,定时器计数到重装载值(arr)产生一次中断,产生一次中断的时间为: 其中:T为定时器周期,也为此处产生一次中断的时间;arr为重装载值…

useCallback 和 useMemo 使用场景

一切为了性能,无论是 useCallback 还是 useMemo 还是 memo,都是为了让不该渲染的组件不去渲染 在学习 useCallback、useMemo 之前,我们需要知道一点,React 的渲染是自顶而下,如果父组件渲染了,那么子组件也会渲染,其子孙组件“世世代代”都要渲染 但如果父组件的渲染与子…

[LeetCode 最大岛屿面积

### DFS解法``` python class Solution:dir = [(-1,0),(1,0),(0,-1),(0,1)]def dfs(self,grid,x,DFS解法 class Solution:dir = [(-1,0),(1,0),(0,-1),(0,1)]def dfs(self,grid,x,y):if x < 0 or x >= len(grid) or y < 0 or y >= len(grid[0]) or grid[x][y] != 1…