docs(project-summary): 新增 TCPClientTester 打包与启动工作总结
This commit is contained in:
185
src/work/project-summary/tcpclienttester-打包与启动工作总结.md
Normal file
185
src/work/project-summary/tcpclienttester-打包与启动工作总结.md
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
---
|
||||||
|
icon: mdi:lan-connect
|
||||||
|
date: 2026-03-06
|
||||||
|
category:
|
||||||
|
- 工作
|
||||||
|
- 项目总结
|
||||||
|
tag:
|
||||||
|
- TCPClientTester
|
||||||
|
- 打包部署
|
||||||
|
- Linux
|
||||||
|
title: TCPClientTester 打包与启动工作总结
|
||||||
|
---
|
||||||
|
|
||||||
|
TCPClientTester 打包与启动工作总结
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
|
# TCPClientTester 打包与启动工作总结
|
||||||
|
|
||||||
|
> 本文整理了 TCPClientTester 在目标机器 `10.6.221.8` 的编译、打包、部署、启动验证及问题修复过程,用于后续复用与交接。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 背景与目标
|
||||||
|
|
||||||
|
- 目标:在 `10.6.221.8` 上完成 TCPClientTester 的可独立运行打包。
|
||||||
|
- 输出:桌面工具目录 `/home/sunri/Desktop/tool`,包含可执行程序、配置资源、依赖库和启动脚本。
|
||||||
|
- 结果:通过 `DISPLAY=:0` 启动验证,程序可正常拉起。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 编译前准备
|
||||||
|
|
||||||
|
### 2.1 同步依赖目录
|
||||||
|
|
||||||
|
从参考机 `10.6.220.186` 同步 `08_Preview` 到目标机:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh 10.6.220.186 'tar czf - -C /home/sunri 08_Preview' | ssh 10.6.221.8 'tar xzf - -C /home/sunri'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 环境变量
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export PRJHOME=/home/sunri/IdeaProjects/V2.00
|
||||||
|
export CYGHOME=/home/sunri/08_Preview/linx80
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 编译流程
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/sunri/IdeaProjects/V2.00/src_cxx/99_TestTool/TCPClientTester
|
||||||
|
PRJHOME="$PRJHOME" CYGHOME="$CYGHOME" qmake TCPClientTester.pro
|
||||||
|
PRJHOME="$PRJHOME" CYGHOME="$CYGHOME" make -j4
|
||||||
|
```
|
||||||
|
|
||||||
|
编译产物:
|
||||||
|
|
||||||
|
- `/home/sunri/IdeaProjects/V2.00/binary/linx80/bin/tcptester`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 打包目录规范
|
||||||
|
|
||||||
|
目标目录:`/home/sunri/Desktop/tool`
|
||||||
|
|
||||||
|
建议结构:
|
||||||
|
|
||||||
|
- `tool/bin/tcptester`
|
||||||
|
- `tool/lib/`(运行依赖库)
|
||||||
|
- `tool/config/`(配置与资源)
|
||||||
|
- `tool/run_tcptester.sh`(统一启动脚本)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 文件拷贝与依赖收集
|
||||||
|
|
||||||
|
### 5.1 程序与配置资源
|
||||||
|
|
||||||
|
```bash
|
||||||
|
TOOL=/home/sunri/Desktop/tool
|
||||||
|
SRC=/home/sunri/IdeaProjects/V2.00/src_cxx/99_TestTool/TCPClientTester
|
||||||
|
BIN=/home/sunri/IdeaProjects/V2.00/binary/linx80/bin/tcptester
|
||||||
|
|
||||||
|
rm -rf "$TOOL"
|
||||||
|
mkdir -p "$TOOL/bin" "$TOOL/lib" "$TOOL/config"
|
||||||
|
|
||||||
|
cp -f "$BIN" "$TOOL/bin/"
|
||||||
|
cp -f "$SRC/basic.xml" "$TOOL/config/"
|
||||||
|
cp -f "$SRC/TCPClientTester_zh_CN.qm" "$TOOL/config/"
|
||||||
|
|
||||||
|
for d in mainStationFile model res uploadFile lib "边缘节点一键测试" "巡视设备一键测试" "主站一键测试"; do
|
||||||
|
[ -d "$SRC/$d" ] && cp -a "$SRC/$d" "$TOOL/config/"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 依赖库自动拷贝
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldd "$BIN" | awk '/=> \/home\/sunri\// {print $3}' | sort -u | while read -r so; do
|
||||||
|
cp -f "$so" "$TOOL/lib/"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 启动脚本与验证
|
||||||
|
|
||||||
|
### 6.1 启动脚本
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat > /home/sunri/Desktop/tool/run_tcptester.sh <<'EOF'
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
export LD_LIBRARY_PATH="$SCRIPT_DIR/lib:${LD_LIBRARY_PATH:-}"
|
||||||
|
export TCPCLIENTTESTER_LANG="${TCPCLIENTTESTER_LANG:-zh_CN}"
|
||||||
|
cd "$SCRIPT_DIR/config"
|
||||||
|
exec "$SCRIPT_DIR/bin/tcptester" "$@"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x /home/sunri/Desktop/tool/run_tcptester.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.2 启动验证
|
||||||
|
|
||||||
|
```bash
|
||||||
|
env DISPLAY=:0 /home/sunri/Desktop/tool/run_tcptester.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
持续运行验证(返回 `124` 表示进程在运行):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
timeout 8s env DISPLAY=:0 /home/sunri/Desktop/tool/run_tcptester.sh
|
||||||
|
echo $?
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. 问题定位与修复
|
||||||
|
|
||||||
|
### 7.1 问题现象
|
||||||
|
|
||||||
|
- 程序启动时在 `CBasecfgManger::getLanguage()` 处触发段错误(`SIGSEGV`)。
|
||||||
|
|
||||||
|
### 7.2 修复方案
|
||||||
|
|
||||||
|
- 修改 `main.cpp`,避免调用崩溃路径。
|
||||||
|
- 改为从环境变量读取语言:`TCPCLIENTTESTER_LANG`。
|
||||||
|
- 默认值设置为 `zh_CN`,保障无环境变量时可正常启动。
|
||||||
|
|
||||||
|
修复文件:
|
||||||
|
|
||||||
|
- `/home/sunri/IdeaProjects/V2.00/src_cxx/99_TestTool/TCPClientTester/main.cpp`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. 常用命令速查
|
||||||
|
|
||||||
|
中文启动:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/home/sunri/Desktop/tool/run_tcptester.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
英文启动:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
TCPCLIENTTESTER_LANG=en_US /home/sunri/Desktop/tool/run_tcptester.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
检查缺失依赖:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldd /home/sunri/Desktop/tool/bin/tcptester | grep "not found"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. 交付结论
|
||||||
|
|
||||||
|
- 已完成从编译到独立目录打包的全流程。
|
||||||
|
- 启动脚本已固化依赖路径与语言参数,便于现场快速使用。
|
||||||
|
- 崩溃问题已通过入口语言加载逻辑调整规避,当前版本可稳定启动。
|
||||||
Reference in New Issue
Block a user