yoola's Blog - publish
type: channel
link: https://yoola.top/category/pub
items: 在WSL2上安装QT6开发环境
items: 修复编译异常
items: 在 WSL 上安装 Qt5 编译环境
items: QT5-RK3566交叉编译记录
items: QT-5.15.2 for RK3566 安装过程记录
items: python-udp数据打包-struct模块介绍及使用说明
items: <待总结>类型擦除包装器
items: mprotect是个好东西，待总结
items: 婺源计划
items: 穿越东西计划攻略

在WSL2上安装QT6开发环境
type: item
date: 2025-07-25T18:00:00+08:00
description: 写在前面qt6只能跑在ubuntu22.04上，如果在ubuntu20.04上跑qt5有点困难ubuntu20.04 的原生Qtcreator只支持到4.11.0-2build2,界面有点僵硬

修复编译异常
type: item
date: 2025-07-23T17:12:00+08:00
description: 1. 编译异常Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing. WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation. Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation. On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution. On macOS, you can use Homebrew's llvm package. On Windows, you must set LLVM_INSTALL_DIR to the installation path. ERROR: Feature 'eglfs' was enabled, but the pre-condition '!config.android && !config.darwin && !config.win32 && !config.wasm && features.egl' failed. ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.msvc && features.system-freetype && libs.fontconfig' failed. ERROR: Feature 'tslib' was enabled, but the pre-condition 'libs.tslib' failed. ERROR: Feature 'system-sqlite' was enabled, but the pre-condition 'features.sql-sqlite && libs.sqlite3' failed. done...2. 尝试解决解决编译异常2.1 尝试修复fontconfig辅助文章：Linux系统编译QT5.15.0及串口问题# 在嵌入式主机上安装fontconfig sudo apt-get install libfontconfig1-dev # 在主机上同步lib rsync -avz --rsync-path="sudo rsync" cat@192.168.0.113:/usr/lib ~/WorkSpace/lubanCat/rootFS/usr rsync -avz --rsync-path="sudo rsync" cat@192.168.0.113:/usr/include ~/WorkSpace/lubanCat/rootFS/usr symlinks -rc ~/WorkSpace/lubanCat/rootFS再次编译看是否解决:可以看到fontconfig解决了Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing. WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation. Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation. On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution. On macOS, you can use H…

在 WSL 上安装 Qt5 编译环境
type: item
date: 2025-07-22T19:13:00+08:00
description: 一、在 WSL 上安装 Qt5 编译环境（无图形界面方案）精简安装步骤（无 GUI）更新系统并安装基础依赖sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake ninja-build pkg-config安装 Qt5 核心开发包# 安装最小化的 Qt5 开发环境 sudo apt install -y qt5-qmake qtbase5-dev # 可选：安装常用模块（按需选择） sudo apt install -y \ qtdeclarative5-dev \ qttools5-dev \ qtmultimedia5-dev \ qtscript5-dev验证# 检查 qmake 版本 qmake --version # 检查可用模块 qmake -query QT_INSTALL_LIBS输出如下yoooola@xxxxx:~/WorkSpace/lubanCat$ qmake --version QMake version 3.1 Using Qt version 5.12.8 in /usr/lib/x86_64-linux-gnu yoooola@xxxxx:~/WorkSpace/lubanCat$ qmake -query QT_INSTALL_LIBS /usr/lib/x86_64-linux-gnu二、如果需要WSL使用qtcreatorsudo apt-get update # 安装qt5 sudo apt-get install cmake qt5-default qtcreator # 注意，如果提示如下内容，建议换官方源处理 yoooola@xxxxxx:~/WorkSpace/lubanCat/hello_arm/build$ sudo apt-get install cmake qt5-default qtcreator --fix-missing 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 qt5-default 已经是最新版 (5.9.5+dfsg-0ubuntu2.6)。 cmake 已经是最新版 (3.16.3-1ubuntu1.20.04.1)。 有一些软件包无法被安装。如果您用的是 unstable 发行版，这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助： 下列软件包有未满足的依赖关系： qtcreator : 依赖: qml-module-qtqml-models2 但是它将不会被安装 依赖: qml-module-qtquick-controls (>= 5.5.0~) 但是它将不会被安装 依赖: qml-module-qtquick2 (>= 5.5.0~) 但是它将不会被安装 依赖: qtdeclarative-abi-5-9-5 推荐: clang 但是它将不会被安装 推荐: qmlscene 但是它将不会被安装 推荐: qt5-doc 但是它将不会被安装 推荐: qtcreator-doc 但是它将不会被安装 推荐: qtxmlpatterns5-dev-tools 但是它将不会被安装 推荐: xterm 但是它将不会被安装 或 x-terminal-emulator E: 无法修正错误，因为您要求某些软件包保持现状，就是它们破坏了软件包间的依赖关系。安装MobaXterm,用来激活界面MobaXterm下载地址安装完成后# 打开MobaXterm，输入 qtcreator 可能会出现QT界面中文显示异常的情况，关闭QT，并链接文字到系统sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/font三、后台运行qtcreator# 后台运行 qtcreator & # 后台运行，终端关掉也没事 nohup qtcreator >/dev/null 2>&1 & # 关闭后台qtcreator pkill -9 qtcreator

QT5-RK3566交叉编译记录
type: item
date: 2025-07-20T13:10:00+08:00
description: Qt5交叉编译记录前言使用野火交叉编译Qt库(Qt5)进行linux平台的交叉编译qt5.15.2，发现一些问题。具体是指编译时，执行到4.1.2.2 创建sysroot目录发生了一些问题，导致编译检查时发现缺少以下库文件xcbeglfsfontxconfigtslibsystem-sqlite在不同的平台上多次尝试创建sysroot目录，尝试debian10,debian11均无果。最后在该教程中提到的sysroot_debian10.tar.gz部署以后，终于可以正常完成编译。然后就产生了好奇，为什么我自己从机器上实际同步到编译主机的库文件就找不到呢？一、排查思路1. 排查野火给的库文件和从机器上同步的库文件目录的区别按照泰山派的资料导入板载系统镜像【立创·泰山派RK3566开发板】板载系统镜像提取# 创建目录 mkdir -p ~/WorkSpace/rootfs # 从嵌入式机器上导入库文件 sudo rsync -avx root@192.168.50.113:/ ~/WorkSpace/rootfs # 对比lib目录 diff -rq --brief ~/WorkSpace/sysroot/lib ~/WorkSpace/rootfs/lib | grep "Only in /home/yoooola/WorkSpace/sysroot" > missing_lib_files.txt # 对比usr目录 diff -rq --brief ~/WorkSpace/sysroot/usr ~/WorkSpace/rootfs/usr | grep "Only in /home/yoooola/WorkSpace/sysroot" > missing_usr_files.txt1.1 分析对比结果xcb,eglfs,fontconfig,tslib,system-sqlite 关键文件查找结果yoooola@LAPTOP-7RPMJTMK:~/WorkSpace$ find sysroot -path '*plugins/platforms/*eglfs*' 2>/dev/null sysroot/usr/lib/aarch64-linux-gnu/qt5/plugins/platforms/libqeglfs.so yoooola@LAPTOP-7RPMJTMK:~/WorkSpace$ find rootfs/ -path '*plugins/platforms/*eglfs*' 2>/dev/null rootfs/usr/lib/aarch64-linux-gnu/qt5/plugins/platforms/libqeglfs.so yoooola@LAPTOP-7RPMJTMK:~/WorkSpace$ find sysroot -name 'libfontconfig*.so*' 2>/dev/null sysroot/usr/lib/aarch64-linux-gnu/libfontconfig.so sysroot/usr/lib/aarch64-linux-gnu/libfontconfig.so.1 sysroot/usr/lib/aarch64-linux-gnu/libfontconfig.so.1.12.0 yoooola@LAPTOP-7RPMJTMK:~/WorkSpace$ find rootfs/ -name 'libfontconfig*.so*' 2>/dev/null rootfs/usr/lib/aarch64-linux-gnu/libfontconfig.so.1 rootfs/usr/lib/aarch64-linux-gnu/libfontconfig.so.1.12.0 yoooola@LAPTOP-7RPMJTMK:~/WorkSpace$ find sysroot -name '*libts*.so*' 2>/dev/null sysroot/usr/lib/gcc/aarch64-linux-gnu/8/libtsan.so sysroot/usr/lib/aarch64-linux-gnu/libts.so.0 sysroot/usr/lib/aarch64-linux-gnu/libtsan.so.0.0.0 sysroot/usr/lib/aarch64-linux-gnu/libtsan.so.0 sysroot/usr/lib/aarch64-linux-gnu/libts.so sysroot/usr/lib/aarch64-linux-gnu/libts.so.0.10.1 yoooola@LAPTOP-7RPMJTMK:~/WorkSpace$…

QT-5.15.2 for RK3566 安装过程记录
type: item
date: 2025-07-11T23:53:00+08:00
description: 下载https://download.qt.io/archive/qt/5.15/5.15.2/single/ qt-everywhere-src-5.15.2.tar.xzhttps://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz交叉编译QT5的库，参考资料野火论坛-交叉编译Qt库(Qt5)构建sysroot在主控板上安装rsync,首先确保主控板已经脸上基础的网络# pull一下源 sudo apt update # 安装rsync sudo apt-get install rsync # 安装ssh客户端 sudo apt-get install openssh-client # 安装ssh服务端 sudo apt-get install openssh-server sudo apt-get install \ libxcb1-dev \ libxcb-xinerama0-dev \ libxcb-icccm4-dev \ libxcb-image0-dev \ libxcb-keysyms1-dev \ libxcb-render-util0-dev \ libxcb-shape0-dev sudo apt-get install -y libx11-dev freetds-dev libpq-dev libiodbc2-dev firebird-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev libxcb-xinerama0 libxcb-xinerama0-dev libatspi2.0-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxss-dev libxtst-dev libpci-dev libcap-dev libxrandr-dev libdirectfb-dev libaudio-dev libxkbcommon-x11-dev sudo apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools libunwind-dev sudo apt-get install -y libfreetype6-dev libicu-dev libsqlite3-dev libasound2-dev libnss3-dev libxss-dev libxtst-dev libpci-dev libcap-dev libxrandr-dev libdirectfb-dev libaudio-dev libavcodec-dev libavformat-dev libswscale-dev libts-dev libfontconfig1-dev sudo apt-get install -y libssl-dev libdbus-1-dev libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libgles2-mesa rsyslog libjpeg-dev sudo apt install \ libxcb1-dev:arm64 \ libxcb-xinerama0-dev:arm64 \ libxcb-icccm4-dev:arm64 \ libxcb-image0-dev:arm64 \ libxcb-keysyms1-dev:arm64 \ libxcb-render-util0-dev:arm64 \ libxcb-shape0-dev:arm64 …

python-udp数据打包-struct模块介绍及使用说明
type: item
date: 2025-06-26T11:31:00+08:00
description: 原始需求 udp发送数据包结构：起始标志（0x5A,0xA5）2字节报文长度（大端，2字节）命令码0x66（1字节）HMI序号0x00（1字节）保留0x00（1字节）文件名长度n（strlen(文件名)+1，1字节）文件名（绝对路径，包含'0'，n字节）保留0x01（1字节）保留0x00（1字节）校验和（1字节，从起始标志开始算） udp应答报文结构：起始标志0x5A,0xA5（2字节）报文长度（2字节）命令码（1字节）状态码（0x00失败，0x01成功，1字节）校验和（1字节，从起始标志开始算）需求实现 =========================字节打包测试代码===============================#!/usr/bin/env python3 # -*- coding: utf-8 -* import struct import os def calculate_checksum(data): """计算校验和（所有字节累加和的低8位）""" return sum(data) & 0xFF # ================= 发送固件更新数据包构造 ================= def build_request_packet(filename): """ 构造发送数据包 :param filename: 绝对路径文件名(如"/data/test.txt") :return: 字节流数据包 """ # 固定头部字段 start_flag = b'\x5A\xA5' command_code = 0x66 hmi_id = 0x00 reserved1 = 0x00 reserved2 = 0x01 reserved3 = 0x00 # 处理文件名 filename_bytes = filename.encode('utf-8') + b'\x00' # 添加终止符 filename_len = len(filename_bytes) # 包含\0的长度 # 构造可变部分 variable_part = struct.pack('>B', filename_len) + \ filename_bytes + \ struct.pack('>B', reserved2) + \ struct.pack('>B', reserved3) # 计算总长度（从命令码开始到reserved3） """ udp发送数据包结构: 1. 起始标志(0x5A,0xA5)2字节 2. 报文长度(大端, 2字节) 3. 命令码0x66(1字节) 4. HMI序号0x00(1字节) 5. 保留0x00(1字节) 6. 文件名长度n(strlen(文件名)+1, 1字节) 7. 文件名(绝对路径, 包含'0', n字节) 8. 保留0x01(1字节) 9. 保留0x00(1字节) 10. 校验和(1字节, 从起始标志开始算) """ pkt_length = 2 + 2 + 1 + 1 + 1 + 1 + filename_len + 1 + 1 + 1 # 构造完整数据包（先构造未校验部分） packet_without_checksum = struct.pack('>2sHBBBB', start_flag, pkt_length, command_code, hmi_id, reserved1, filename_len) + \ filename_bytes + \ struct.pack('>BB', reserved2, reserved3) # 计算校验和 checksum = calculate_checksum(packet_without_checksum) # 从head开始算 # 添加校验和 return packet_without_checksum + struct.pack('>B', checksum) # ================= 应答数据包解析 ================= def parse_response_packet(data): """ 解析应答数据包 :param data: 字节流数据 :return: 解析后的字典 :raises: ValueError 当数据无效时 """ # 基础校验 if len(data) < 7: raise ValueError("数据包长度不足") """ 1. 起始标志0x5A,0xA5(2字节) 2. 报文长度(2字节) = 7 3. 命令码(1字节) 4. 状态码(0x00失败, 0x01成功, 1字节) 5. 校验和(1字节, 从起始标志开始算) """ # 解析固定部分 start_flag, pkt…

<待总结>类型擦除包装器
type: item
date: 2025-06-18T10:58:00+08:00
description: 待总结

mprotect是个好东西，待总结
type: item
date: 2025-04-08T19:25:00+08:00

婺源计划
type: item
date: 2025-04-02T17:30:00+08:00
description: 景点最终景点选择● 思溪延村-西冲村● 漳村● 理坑● 查平坦（没什么特色景点-也可能是未开发）● 凤山村（古塔）● 察关村● 虹关村路径选择待定● 卧龙谷 - 想要徒步的话可以去（有卧龙瀑布），离住的地方很近● 石城 - 拍晨烟袅袅（但一般是秋天？），需要长焦镜头● 菊径（是一个）不选择去：● 严田村 - 小火车没有了● 美食：出发前准备：服饰及装备公共用品工具[X] 三脚架[X] 折叠椅[X] 充气脚蹬[ ] 驱蚊器[ ] 手电[X] 随车雨伞两把[ ] 外购透明雨伞一把被褥[X] 一次性床单[X] 随车小毯子生活用品[ ] 一次性牙刷数码用品[ ] 相机及电池盒（记得提前清空SD卡）[ ] 充电宝[ ] 降噪耳机[ ] 无人机[ ] 干鞋器便携饮食[X] 随车小零食[ ] 自热米饭或煲仔饭[X] 随车纯净水[X] 随车纸及湿巾[ ] 水果（买苹果和小西红柿）[ ] 口香糖其他[ ] 给女生的小礼物药品[ ] 布洛芬[ ] 阿莫西林女士女士建议装备[ ] 相机[ ] 平板[ ] 热水杯[ ] 帽子（帽子可以带不同风格的，不必苛求遮阳）[ ] 墨镜[ ] 降噪耳机[ ] 化妆品[ ] 防晒霜[ ] 头绳等个人头饰女士衣服：（小清新系和酷酷风）● 可以准备浅色衣服和浅色内衣● 准备裙子或其他合适的衣服（花花绿绿的裙子来一些）● 可以准备雨天的风衣或者帅帅的衣服● 准备徒步（舒服）的鞋子[ ] 需要的卫生用品，如卫生巾[ ] 如果有装饰用的包包可以带上不需要额外准备● 雨伞（买的透明雨伞要带上）● 床单● 充电宝● 纸与湿巾● 相机支架男士男士衣服[ ] 换洗内衣四套[ ] 冲锋衣[ ] 黑色外套[ ] 白色短袖T恤三件[ ] 长袖衬衫[ ] 灯绒裤[ ] 浅色裤子[ ] 深色工装休闲裤[ ] 速干裤[ ] 防晒衣鞋子[X] 随车拖鞋[X] 徒步鞋[ ] 袜子四双其他[ ] 帽子[ ] 大饺子包[ ] 小饺子包[ ] 墨镜[X] 随车眼罩

穿越东西计划攻略
type: item
date: 2025-02-28T21:41:00+08:00
description: 一、出发及驾车时间：徒步全程约6公里不到，耗时3-4小时开车来回需要4小时 + 两个小时休息时间期望3-4点回，8点到家9:00 从光明宏发上域出发 10:00 点开始徒步 16点完毕 17点周围吃饭 18点看日落，然后回家，2小时后大致20:00回家停车东涌（东涌社区工作站，或OHANA民宿，东涌家园北区停车场，东涌沙滩停车场），西冲打的回东涌（10公里，30分钟）二、需要带的东西着装速干衣服遮阳帽太阳镜两人要背一个包随身相机（肩带）充电宝（带线）能量饮料*2巧克力（士力架）防晒纸巾车内纸巾/湿巾备用衣服备用舒服的鞋子拖鞋矿泉水毛毯魔芋爽（麻酱）三、就餐（晚餐）1. 辉记海上餐厅离得近，饿了就能吃，就餐环境好海胆炒饭清蒸海鱼2. 洞背山庄离得远，需要开车毛蟹食材可以3. 昌记客家美食坊离得近客家咸鸡让豆腐鱼香茄子煲4.阿婆海胆炒饭四、拍照机位天文台栈道（日落）东塘仔巨莽岛海蚀柱