SRecord 是一套用于处理 EPROM/HEX/SREC 文件的命令行工具,常用工具包括:
- srec_cat
- srec_cmp
- srec_info
本文介绍如何在 Windows 下使用 MSYS2 + Clang + Ninja 编译,并解决常见 DLL 依赖问题。
环境准备
安装 MSYS2 Clang64 环境依赖:
1pacman -S --needed \
2 mingw-w64-clang-x86_64-toolchain \
3 mingw-w64-clang-x86_64-cmake \
4 mingw-w64-clang-x86_64-ninja \
5 git检查工具:
1clang --version
2cmake --version
3ninja --version获取源码
1git clone https://github.com/sierrafoxtrot/srecord.git基础编译配置
1cmake -G Ninja \
2 -S . \
3 -B build \
4 -DCMAKE_BUILD_TYPE=Release \
5 -DCMAKE_C_COMPILER=clang \
6 -DCMAKE_CXX_COMPILER=clang++ \
7 -DBUILD_SHARED_LIBS=OFF编译三个核心工具
1cmake --build build --target srec_cat srec_cmp srec_info -j12build.sh
1#!/usr/bin/env bash
2set -e
3
4# ===== repo =====
5REPO="https://github.com/sierrafoxtrot/srecord.git"
6DIR="srecord"
7BUILD="build"
8
9# ===== clean build =====
10echo "== clean build =="
11rm -rf "$BUILD"
12
13
14# ===== cmake configure (关键:强制 ninja + 关闭 doc) =====
15echo "== cmake configure =="
16
17cmake -G Ninja \
18 -S . \
19 -B build \
20 -DCMAKE_BUILD_TYPE=Release \
21 -DCMAKE_C_COMPILER=clang \
22 -DCMAKE_CXX_COMPILER=clang++ \
23 -DBUILD_SHARED_LIBS=OFF \
24 -DCMAKE_EXE_LINKER_FLAGS="-static" \
25 -DCMAKE_C_FLAGS="-O2 -flto" \
26 -DHAVE_GCRYPT_H=OFF \
27 -DCMAKE_CXX_FLAGS="-O2 -flto"
28
29# ===== build =====
30echo "== build =="
31# cmake --build build --target help
32cmake --build $BUILD --target srec_cat srec_cmp srec_info -j12
33
34# ===== result =====
35echo "== output exe =="
36find . -type f -name "srec_*.exe"
37
38echo "== done =="总结
最终目标:
👉 生成 srec_cat.exe srec_cmp.exe srec_info.exe
评论