Add inference snapshot notify client
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
# Codex 快速上下文:Windows + WSL + Linaro 交叉编译
|
||||
|
||||
这份文档主要给 Codex 在新聊天里快速恢复上下文用。用户希望中文回复,并希望每次回复末尾带一个简短的“上下文快照”。
|
||||
|
||||
## 必须记住
|
||||
|
||||
- 项目 Windows 路径:`C:\Users\Smos.DESKTOP-6MT98U8\Desktop\yolov5-inference`
|
||||
- WSL 对应路径:`/mnt/c/Users/Smos.DESKTOP-6MT98U8/Desktop/yolov5-inference`
|
||||
- 目标平台:aarch64 Linux
|
||||
- 目标设备运行库较旧,约为 `GLIBC 2.28`
|
||||
- 不要使用过新的 Ubuntu/Debian 交叉工具链,避免产物依赖 `GLIBC_2.33`、`GLIBC_2.34`、`GLIBCXX_3.4.29`
|
||||
- 当前使用 Linaro GCC 7.4.1:
|
||||
`/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu`
|
||||
- 工具链必须放在 WSL Linux 文件系统中,不要放在 `/mnt/c/...`,否则符号链接可能损坏并触发 `liblto_plugin.so: file too short`
|
||||
- C++ 标准保持 `C++14`
|
||||
- RKNN 链接库使用 `rknn_api`,不要改成 `rknnrt`
|
||||
|
||||
## 当前 CMake 路线
|
||||
|
||||
当前 `CMakeLists.txt` 已直接设置交叉编译器:
|
||||
|
||||
```cmake
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
set(TOOLCHAIN_PATH "/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu" CACHE PATH "Linaro GCC 7.4.1 aarch64 toolchain path")
|
||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-g++)
|
||||
set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PATH}/aarch64-linux-gnu/libc)
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
```
|
||||
|
||||
因此常规构建时可以直接 `cmake <source>`,不一定需要额外传 `-DCMAKE_TOOLCHAIN_FILE`。仓库里还有 `toolchain-aarch64.cmake`,但当前主路线以 `CMakeLists.txt` 里的 Linaro 配置为准。
|
||||
|
||||
## 推荐编译命令
|
||||
|
||||
在 Windows PowerShell 中调用 WSL:
|
||||
|
||||
```powershell
|
||||
wsl -d Ubuntu bash -lc "rm -rf /home/smos/yolov5-linaro-build && mkdir -p /home/smos/yolov5-linaro-build && cd /home/smos/yolov5-linaro-build && cmake /mnt/c/Users/Smos.DESKTOP-6MT98U8/Desktop/yolov5-inference && make -j16 && file yolov5"
|
||||
```
|
||||
|
||||
产物位置:
|
||||
|
||||
```text
|
||||
/home/smos/yolov5-linaro-build/yolov5
|
||||
```
|
||||
|
||||
## 验证命令
|
||||
|
||||
检查工具链版本:
|
||||
|
||||
```bash
|
||||
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc --version
|
||||
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --version
|
||||
```
|
||||
|
||||
预期包含:
|
||||
|
||||
```text
|
||||
Linaro GCC 7.4-2019.02
|
||||
```
|
||||
|
||||
检查产物架构:
|
||||
|
||||
```bash
|
||||
file /home/smos/yolov5-linaro-build/yolov5
|
||||
```
|
||||
|
||||
预期包含:
|
||||
|
||||
```text
|
||||
ELF 64-bit LSB executable, ARM aarch64
|
||||
```
|
||||
|
||||
检查是否误依赖高版本 glibc/libstdc++:
|
||||
|
||||
```bash
|
||||
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-readelf --version-info /home/smos/yolov5-linaro-build/yolov5 | grep -E 'GLIBC_2\.33|GLIBC_2\.34|GLIBCXX_3\.4\.29'
|
||||
```
|
||||
|
||||
没有输出才是好结果。
|
||||
|
||||
检查 RKNN 链接:
|
||||
|
||||
```bash
|
||||
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-readelf -d /home/smos/yolov5-linaro-build/yolov5 | grep rknn
|
||||
```
|
||||
|
||||
预期包含:
|
||||
|
||||
```text
|
||||
librknn_api.so
|
||||
```
|
||||
|
||||
## 常见错误
|
||||
|
||||
- `liblto_plugin.so: file too short`:工具链放在 Windows 文件系统导致符号链接损坏。把工具链重新 clone 到 `/home/smos/...`
|
||||
- `GLIBC_2.33` / `GLIBC_2.34 not found`:用了过新的工具链或 sysroot。改回 Linaro GCC 7.4.1
|
||||
- `GLIBCXX_3.4.29 not found`:用了过新的 g++ 或 C++ runtime。保持 Linaro GCC 7.4.1、C++14、`rknn_api`
|
||||
|
||||
## 每次回复规则
|
||||
|
||||
用户希望每次回复末尾附带“上下文快照”,方便开新聊天避免上下文压缩丢信息。
|
||||
|
||||
Codex 看不到精确的上下文剩余额度或百分比,所以不要编造数字。可以在快照中写:
|
||||
|
||||
```text
|
||||
上下文额度:无法读取精确数值;当前仅能提供风险状态和关键信息摘要。
|
||||
```
|
||||
|
||||
当对话变长、文件内容很多、输出很大或任务跨多轮时,提醒用户可以开启新聊天,并把上下文快照复制过去。
|
||||
Reference in New Issue
Block a user