docs(blog): 按博客风格整理三篇技术文档

This commit is contained in:
liumangmang
2026-03-09 14:09:19 +08:00
parent d70de00176
commit e765565a70
3 changed files with 335 additions and 0 deletions

View File

@@ -0,0 +1,113 @@
---
title: AlgoSimulation 打包与交付记录
icon: mdi:package-variant-closed
date: 2026-03-09
category:
- 工作
- 项目总结
tag:
- AlgoSimulation
- C++
- Linux
- 打包部署
---
本文记录 AlgoSimulation 在目标机器上的编译、依赖修正与独立目录打包过程,重点是 OpenSSL 符号版本冲突的定位与处理。
<!-- more -->
# AlgoSimulation 打包与交付记录
## 1. 目标与环境
- 编译目标:`/home/sunri/IdeaProjects/V2.00/src_cxx/99_TestTool/AlgoSimulation`
- 编译机:`10.6.221.8`
- 参考机:`10.6.220.186`
- 约束:`08_Preview` 已同步完成,本次仅处理编译、链接与打包
## 2. 基础编译流程
```bash
export PRJHOME=/home/sunri/IdeaProjects/V2.00
export CYGHOME=/home/sunri/08_Preview/linx80
cd /home/sunri/IdeaProjects/V2.00/src_cxx/99_TestTool/AlgoSimulation
qmake AlgoSimulation.pro
make -j4
```
## 3. 链接问题与修正
链接阶段出现 OpenSSL 相关符号版本不匹配(`OPENSSL_1_1_0d`)。
原因是 `libmosquitto``libcurl``libssh2` 依赖的 OpenSSL 版本,与系统默认搜索到的 `libssl/libcrypto` 不一致。
修正方式:通过 `qmake` 注入链接参数,显式指定 `gmssl` 库并关闭 `as-needed` 提前裁剪。
```bash
export PRJHOME=/home/sunri/IdeaProjects/V2.00
export CYGHOME=/home/sunri/08_Preview/linx80
cd /home/sunri/IdeaProjects/V2.00/src_cxx/99_TestTool/AlgoSimulation
make clean
qmake "QMAKE_LFLAGS+=-Wl,--no-as-needed" \
"LIBS+=/usr/local/gmssl/lib/libssl.so.1.1 /usr/local/gmssl/lib/libcrypto.so.1.1" \
AlgoSimulation.pro
make -j4
```
编译产物:`/home/sunri/IdeaProjects/V2.00/binary/linx80/bin/AlgoSimulation`
## 4. 独立目录打包
目标目录:`/home/sunri/Desktop/AlgoSimulation_tool`
```bash
TOOL=/home/sunri/Desktop/AlgoSimulation_tool
BIN=/home/sunri/IdeaProjects/V2.00/binary/linx80/bin/AlgoSimulation
rm -rf "$TOOL"
mkdir -p "$TOOL/bin" "$TOOL/lib"
cp -f "$BIN" "$TOOL/bin/"
ldd "$BIN" | awk '/=> \/home\/sunri\// {print $3} /=> \/usr\/local\/gmssl\// {print $3}' | sort -u | while read -r so; do
cp -f "$so" "$TOOL/lib/"
done
cp -f /usr/local/gmssl/lib/libssl.so.1.1 "$TOOL/lib/"
cp -f /usr/local/gmssl/lib/libcrypto.so.1.1 "$TOOL/lib/"
```
启动脚本 `run_AlgoSimulation.sh`
```bash
#!/usr/bin/env bash
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
export LD_LIBRARY_PATH="$SCRIPT_DIR/lib:${LD_LIBRARY_PATH:-}"
exec "$SCRIPT_DIR/bin/AlgoSimulation" "$@"
```
## 5. 验证结果
缺库检查:
```bash
LD_LIBRARY_PATH=/home/sunri/Desktop/AlgoSimulation_tool/lib \
ldd /home/sunri/Desktop/AlgoSimulation_tool/bin/AlgoSimulation | grep "not found"
```
- 结果:无输出(未发现缺失依赖)
启动冒烟:
- 在无图形会话环境下提示 `cannot connect to X server`
- 结论:当前阻塞点是图形环境,不是依赖缺失
## 6. 交付清单
- `/home/sunri/Desktop/AlgoSimulation_tool/bin/AlgoSimulation`
- `/home/sunri/Desktop/AlgoSimulation_tool/lib/`
- `/home/sunri/Desktop/AlgoSimulation_tool/run_AlgoSimulation.sh`
## 7. 后续建议
若后续仍出现符号版本或缺库问题,优先按缺失项从 `10.6.220.186` 精准补齐,避免全量同步带来的不可控差异。