首页 > 系统相关 >Linux系统编译QT5.15.0及串口问题

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

时间:2024-11-15 13:45:50浏览次数:1  
标签:QT5.15 get 串口 dev tbuf maxlen install Linux serial

编译流程:

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
}

 

标签:QT5.15,get,串口,dev,tbuf,maxlen,install,Linux,serial
From: https://www.cnblogs.com/boring-luobo/p/18546381

相关文章

  • Linux基本指令(中)(2)
    文章目录前言一、echo二、cat三、more四、less五、head六、tail七、date八、cal九、find十、whoami十一、clear总结前言  承上启下,我们再来看看另外一些常用的基础指令吧!一、echo  语法:echo[选项][字符串]  功能:在终端设备上输出字符串或变量提取后的值......
  • Linux—进程学习-02
    目录Linux—进程学习—21.通过系统调用创建进程—fork1.1fork创建子进程1.2fork函数的返回值1.3利用fork实现多进程2.有关cpu的常识了解3.进程状态3.1从操作系统层面了解进程状态3.1.1就绪和新建状态的理解3.1.2运行和阻塞状态的理解3.1.3挂起状态的理解挂起和阻塞的区......
  • Linux忘记root密码解锁
    一、第一种方式rd.break1、重启系统,更改内核,进入紧急模式这里选择第一项或者第二项都可以(这里的区别是,第一项进去,在更改密码的时候,看到的密码更改提示是加密显示,第二项进去,在更改密码的时候,看到的密码更改提示是明文形式)。然后按e进入紧急模式(以前的版本叫做单用户模式)2、......
  • linux之文件权限
    文件权限管理rwx含义是指在Linux系统中,文件的权限可读(r)、可写(w)、可执行(x)。文件权限是由三组rwx组成,开头第一位表示文件的类型为文件(-)、目录(d)、链接(l)等形式rwx的数字概念r4w2x1-rwxr-xr-xrwx#属主位r-x#属组位r-x#其它位文件权限数字表示为:755文件权限......
  • Linux vi、vim
    在Linux学习,进行各种操作过程中需要用到很多种命令,本篇主要讲基础命令仅供大家参考。绝对是干货满满的一篇文章!!!vim底线模式提示:以下是本篇文章正文内容,仅供参考1.退出vim编辑器:        :W表示write,进行文本编辑写入内容,不会退出vim        :q表示quit,不......
  • Linux 压缩
    在Linux学习,进行各种操作过程中需要用到很多种命令,本篇主要讲压缩仅供大家参考。绝对是干货满满的一篇文章!!!压缩:提示:以下是本篇文章正文内容,仅供参考1.常用的压缩工具:        Linux下常用的压缩工具很多,比如:gzip,zip,bzip2,xz等        tar在......
  • Linux 服务器
    在Linux学习,进行各种操作过程中需要用到很多种命令,本篇主要讲基础命令仅供大家参考。绝对是干货满满的一篇文章!!!服务器:提示:以下是本篇文章正文内容,仅供参考1.IP:        0.0.0.0(特殊IP,系统自带的,非用户分配,这个特殊地址会绑定所有网卡){同时发布到局域IP和公网IP......
  • linux安装mysql
    1.linux在线安装mysql这里直接在线安装即可yuminstallmysql-server要是有网络,在线安装最为便捷,省去自己手动下包的麻烦2.启动mysqlsystemctlstartmysqld#启动mysql服务systemctlenablemysqld#设置开机自启动3.修改mysql密码初始密码需及时修改这里......
  • linux: Out-Of-Memory Killer 机制了解
    在Linux操作系统中,内存管理是确保系统稳定性和性能的关键环节。当系统内存耗尽时,Linux内核会启动一种称为OOMKiller(Out-Of-MemoryKiller)的机制,以选择并终止某些进程,释放内存资源,防止系统崩溃。一、OOMKiller的背景Linux内核采用了内存过度提交(Overcommit)的策略,即允许......
  • 【linux日志】web日志分析
    WEB正确日志格式分析#日志统计举例[root@master~]#cat/etc/httpd/logs/access_log|awk'{print$1}'#对IP排序[root@master~]#cat/etc/httpd/logs/access_log|awk'{print$1}'|sort#打印每一个重复出现IP的次数,[root@master~]#cat/etc/httpd/logs/access_......