UNPKG

librawspeed

Version:

Node.js Native Addon for LibRaw - Process RAW image files with JavaScript

246 lines (186 loc) 5.62 kB
# LibRaw 交叉编译文档 ## 📋 支持的平台 我们支持以下 5 个平台的交叉编译: | 平台 | 架构 | 目标系统 | 状态 | |------|------|----------|------| | Windows | x64 | win32 | ✅ 支持 | | macOS | x64 | darwin | ✅ 支持 | | macOS | ARM64 | darwin | ✅ 支持 | | Linux | x64 | linux | ✅ 支持 | | Linux | ARM64 | linux | ✅ 支持 | ## 🛠️ 必需的工具链 ### 1. Windows x64 交叉编译 **工具链:** `mingw-w64` **安装方法:** ```bash # macOS (使用 Homebrew) brew install mingw-w64 # 验证安装 x86_64-w64-mingw32-gcc --version x86_64-w64-mingw32-g++ --version x86_64-w64-mingw32-ar --version x86_64-w64-mingw32-ranlib --version x86_64-w64-mingw32-strip --version ``` **工具列表:** - `x86_64-w64-mingw32-gcc` - C 编译器 - `x86_64-w64-mingw32-g++` - C++ 编译器 - `x86_64-w64-mingw32-ar` - 静态库归档工具 - `x86_64-w64-mingw32-ranlib` - 静态库索引工具 - `x86_64-w64-mingw32-strip` - 符号剥离工具 ### 2. macOS x64 交叉编译 **工具链:** 系统自带 `clang` + `ar`/`ranlib`/`strip` **安装方法:** ```bash # 系统自带,无需额外安装 # 验证安装 clang --version clang++ --version ar --version ranlib --version strip --version ``` **工具列表:** - `clang` - C 编译器 - `clang++` - C++ 编译器 - `ar` - 静态库归档工具 - `ranlib` - 静态库索引工具 - `strip` - 符号剥离工具 ### 3. macOS ARM64 交叉编译 **工具链:** `aarch64-apple-darwin24-gcc-15` **安装方法:** ```bash # macOS (使用 Homebrew) brew install aarch64-apple-darwin24-gcc-15 # 验证安装 aarch64-apple-darwin24-gcc-15 --version aarch64-apple-darwin24-g++-15 --version ``` **工具列表:** - `aarch64-apple-darwin24-gcc-15` - C 编译器 - `aarch64-apple-darwin24-g++-15` - C++ 编译器 - `ar` - 静态库归档工具(系统自带) - `ranlib` - 静态库索引工具(系统自带) - `strip` - 符号剥离工具(系统自带) ### 4. Linux x64 交叉编译 **工具链:** `musl-cross` (x86_64-linux-musl) **安装方法:** ```bash # macOS (使用 Homebrew) brew install musl-cross # 验证安装 x86_64-linux-musl-gcc --version x86_64-linux-musl-g++ --version x86_64-linux-musl-ar --version x86_64-linux-musl-ranlib --version x86_64-linux-musl-strip --version ``` **工具列表:** - `x86_64-linux-musl-gcc` - C 编译器 - `x86_64-linux-musl-g++` - C++ 编译器 - `x86_64-linux-musl-ar` - 静态库归档工具 - `x86_64-linux-musl-ranlib` - 静态库索引工具 - `x86_64-linux-musl-strip` - 符号剥离工具 ### 5. Linux ARM64 交叉编译 **工具链:** `musl-cross` (aarch64-linux-musl) **安装方法:** ```bash # macOS (使用 Homebrew) brew install musl-cross # 验证安装 aarch64-linux-musl-gcc --version aarch64-linux-musl-g++ --version aarch64-linux-musl-ar --version aarch64-linux-musl-ranlib --version aarch64-linux-musl-strip --version ``` **工具列表:** - `aarch64-linux-musl-gcc` - C 编译器 - `aarch64-linux-musl-g++` - C++ 编译器 - `aarch64-linux-musl-ar` - 静态库归档工具 - `aarch64-linux-musl-ranlib` - 静态库索引工具 - `aarch64-linux-musl-strip` - 符号剥离工具 ## 🚀 快速开始 ### 安装所有工具链 ```bash # 安装所有必需的工具链 brew install mingw-w64 aarch64-apple-darwin24-gcc-15 musl-cross # 验证所有工具链 npm run cross-compile ``` ### 构建所有平台 ```bash # 一次性构建所有平台 npm run cross-compile:all # 构建特定平台 npm run cross-compile:win32 npm run cross-compile:darwin-x64 npm run cross-compile:darwin-arm64 npm run cross-compile:linux-x64 npm run cross-compile:linux-arm64 ``` ## 📁 构建输出 构建完成后,所有平台的库文件将统一输出到 `build` 目录中: ``` deps/LibRaw-Source/LibRaw-0.21.4/build/ ├── win32/ # Windows x64 ├── darwin-x64/ # macOS Intel ├── darwin-arm64/ # macOS Apple Silicon ├── linux-x64/ # Linux x64 └── linux-arm64/ # Linux ARM64 ``` 每个平台目录包含: - `lib/libraw.a` - 静态库文件 - `lib/libraw_r.a` - 静态库文件(线程安全版本) - `include/libraw/` - 头文件目录 - `lib/pkgconfig/` - pkg-config 配置文件 - `share/doc/libraw/` - 文档文件 ## 🔧 故障排除 ### 工具链未找到 如果遇到工具链未找到的错误,请检查: 1. **Homebrew 是否已安装** ```bash brew --version ``` 2. **工具链是否正确安装** ```bash # 检查 mingw-w64 which x86_64-w64-mingw32-gcc # 检查 musl-cross which x86_64-linux-musl-gcc which aarch64-linux-musl-gcc # 检查 macOS ARM64 工具链 which aarch64-apple-darwin24-gcc-15 ``` 3. **PATH 环境变量** ```bash echo $PATH # 确保 Homebrew 的 bin 目录在 PATH 中 ``` ### 构建失败 如果构建失败,请检查: 1. **LibRaw 源码是否完整** ```bash ls -la deps/LibRaw-Source/LibRaw-0.21.4/ ``` 2. **构建目录权限** ```bash ls -la deps/LibRaw-Source/LibRaw-0.21.4/build-* ``` 3. **查看详细错误信息** ```bash npm run cross-compile:win32 2>&1 | tee build.log ``` ## 📚 相关文档 - [API 文档](API.md) - [示例代码](EXAMPLES.md) - [支持的格式](FORMATS.md) - [测试指南](TESTING.md) ## 🤝 贡献 如果你发现工具链安装或构建过程中的问题,请: 1. 检查本文档是否是最新版本 2. 在 GitHub 上创建 Issue 3. 提供详细的错误信息和系统环境 --- **最后更新:** 202412月 **维护者:** librawspeed 团队