docs(project-summary): 新增 TCPClientTester 打包与启动工作总结

This commit is contained in:
liumangmang
2026-03-06 17:32:31 +08:00
parent d0510e0c92
commit 8cf81f6055

View 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. 交付结论
- 已完成从编译到独立目录打包的全流程。
- 启动脚本已固化依赖路径与语言参数,便于现场快速使用。
- 崩溃问题已通过入口语言加载逻辑调整规避,当前版本可稳定启动。