docs(blog): 按博客风格整理三篇技术文档
This commit is contained in:
113
src/work/project-summary/algosimulation-打包与交付记录.md
Normal file
113
src/work/project-summary/algosimulation-打包与交付记录.md
Normal 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` 精准补齐,避免全量同步带来的不可控差异。
|
||||
Reference in New Issue
Block a user