不建议从源码构建!除非你没 其他办法 了
构建费事费力,需要踩过很多坑才能得到一个勉强能用的版本。
参考 Building from Source ,需要 Perl / Python / MSVC ,其他章节跳过不用看
参考 Qt for Windows - Building from Source ,5 个步骤:
不建议从源码构建!除非你没 其他办法 了
构建费事费力,需要踩过很多坑才能得到一个勉强能用的版本。
参考 Building from Source ,需要 Perl / Python / MSVC ,其他章节跳过不用看
参考 Qt for Windows - Building from Source ,5 个步骤:
使用上存在几个注意事项,当其结果不符合预期时看看这里有没有记录。
QUdpSocket::readyRead()
记录一个关于 信号的 bug ,有数据到达但此信号不再 emit :官方相似 bug 描述
其内部实现依赖 hasPendingData
标志位判断是否发出信号(并调用关联的槽函数) ,但此标志位容易出错, Qt 将此标志位的复位操作交给了用户:
Note: An incoming datagram should be read when you receive the
readyRead()
signal, otherwise this signal will not be emitted for the next datagram.
开发 Qt 软件过程中发现折线图(Qt Charts 二维折线图)显示不全、圆环刻度值(QPainter
自绘)显示异常。
上述问题和程序运行时使用的 Qt 版本有关,但和编译时使用的 Qt 版本无关:
使用 Qt 5.13.2 构建的可执行文件,运行时库如果使用 5.12.12 会启动失败,报错:undefined symbol: qt_resourceFeatureZlib, version Qt_5
在 Qt Creator 中运行、调试项目时,使用的 Qt 版本一般和编译期的版本一致,但我们可以打破这种一致性:
QT.global.enabled_features = rpath
特性:此特性在 5.12.12 中默认关闭;在 5.13.2 中默认开启。LD_LIBRARY_PATH
使找到的 Qt 运行时库和编译时的库版本不一致在设备上部署软件后,如何约束运行时使用的 Qt 版本(以及第三方库):
-rpath
特性约束,要求设备上存在对应的目录LD_LIBRARY_PATH
环境变量约束可以使用 readelf -d a.out
查看可执行文件是否指定了运行时库的查找路径。
搭建环境:
系统环境:
1 | niel@ubuntu:~$ cat /etc/lsb-release |
克隆仓库需要较大的磁盘空间,下载过程也耗时比较久:
1 | apt install apt-mirror |
在 Qt 中虽然存在 QTimeZone
类型,但其官方手册中多次强调了用户不应直接使用 QTimeZone
,而是结合 Qt::TimeSpec
枚举值使用 QDateTime
。
This class is primarily designed for use in QDateTime; most applications will not need to access this class directly and should instead use
QDateTime
with aQt::TimeSpec
ofQt::TimeZone
.
If you require a
QDateTime
that uses the current system time zone at any given moment then you should use aQt::TimeSpec
ofQt::LocalTime
.
Time Zone Offsets 时差
The total offset is comprised of two component parts, the standard time offset and the daylight-saving time offset. 夏时制
在 Qt Creator 如何运行终端程序呢?
在项目的 Build & Run 配置中,勾选 Run in terminal 即可。
选中 Run in terminal 之前,应用程序 Run in 哪里呢?
通过 Windows 任务管理器查看,勾选后作为 qtcreator_process_stub.exe (和 Qt Creator 进程同级别)的子进程运行,没有勾选的话作为 Qt Creator 的子进程运行。
最常用的函数: qDebug(const char *message, ...)
Calls the message handler with the debug message message.
stderr
. QT_NO_DEBUG_OUTPUT
was defined during compilation.我们在谈到“串口”的时候,往往还会提到 RS-232 、RS-485 等等,它们之间的关系是什么?
串行端口 的概念,是和 并行端口 相对的。串口一次只传输 1bit ,但并行端口会同时传输多个 bit 。
通信,传输字符/字节。
历史上字节长度曾基于硬件为 1-48 bit不等,最初通常使用6 bit 或9 bit 为一字节。今日标准以 8 bit 作为一字节。
虽然以太网、FireWire 和 USB 等接口也以串行流的形式发送数据,但术语 串行端口 通常表示符合 RS-232 或相关标准(如 RS-485 或 RS-422)的硬件。
我们可能会用到 232 串口线、或者 422 串口线连接两个设备,但使用 Qt serial port 模块写软件不用考虑使用了哪种串口线,只需要关注收发两端的波特率、校验位、停止位等一致。
The most well-known options are
RS-232 是美国电子工业联盟制定的串行数据通信的接口标准,它广泛用于计算机串行接口外设连接。
它规定连接电缆和机械、电气特性、信号功能及发送过程。其他常用电气标准还有 RS-422-A、RS-423A、RS-485。
出于节省资金和空间的考虑,25 个管脚的 DB-25 连接器已经不常见,9 个管脚的 DB-9 型连接器被广泛使用。RS-232 中 DB-9 型连接器的信号和管脚分配:2-收,3-发,5-接地。
从桌面开发突然进入 VxWorks 嵌入式开发,有几个认知上的调整:
加载桌面操作系统之前的引导阶段,按下任意键进入 BIOS。与之类似,我们在板子引导程序读秒期间(使用串口调试工具)发送任意键能够进入 uboot,使用 printenv
等命令查看状态。
1 | # 查看版本 |
FTP 通信分为主动 active 被动 PASV 模式。
FTP 通信会占用两个 TCP 通道:一个用于命令,一个用于数据。
主动、被动是站在(响应命令的)服务端的角度来说:
FTP 客户端首先向服务端 21 端口发送命令,然后
windows 平台下 cmd/powershell 中的 ftp 命令不支持被动模式,文件管理器支持被动模式。
摘抄自《计算机网络(第7版)-谢希仁》教材,读书笔记。
OSI 的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。
TCP/IP 的体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP 是一个四层的体系结构,它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。不过从实质上将,TCP/IP 只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议 IP(Internet Protocol) 和许多种路由选择协议,因此互联网的网络层也叫做网际层或 IP 层。
局域网虽然是个网络,但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的问题是多个网络互联的问题,是讨论分组(packet)怎样从一个网络,通过路由器,转发到另一个网络。在本章中我们研究的是在同一个局域网中,分组(packet)怎样从一台主机传送到另一台主机,但并不经过路由器转发。从整个互联网来看,局域网仍属于数据链路层的范围。
packet 小包裹、信息包,在教材中一般翻译为“分组”,但“分组”在日常对话中多理解成动词,给读者造成困扰。分组: