Skip to content

Commit dcc146c

Browse files
committed
更新:重构构建指南,新增Windows GNU和MSVC工具链文档,优化内容结构和格式,将静态库从仓库中移除
1 parent 8e9c6d5 commit dcc146c

10 files changed

Lines changed: 262 additions & 132 deletions

File tree

src/SUMMARY.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@
8686

8787
- [Phira 构建指南](./phira_build_guide/README.md)
8888
- [cargo 安装教程](./phira_build_guide/cargo.md)
89-
- [Windows](./phira_build_guide/Windows.md)
89+
- [静态库(prpr-avc)](./phira_build_guide/StaticLib.md)
90+
- [Windows GNU](./phira_build_guide/Windows_Gnu.md)
91+
- [Windows MSVC](./phira_build_guide/Windows_Msvc.md)
9092
- [Linux](./phira_build_guide/Linux.md)
9193
- [macOS](./phira_build_guide/macOS.md)
9294
- [Android](./phira_build_guide/Android.md)

src/phira_build_guide/Linux.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,33 @@
22

33
## 准备阶段
44

5-
1. 确保系统安装了 cargo,可以在终端使用 `cargo -V` 检查系统是否安装了 cargo,如果没有安装,请点击 [这里](./cargo.md)按步骤安装构建工具
5+
1. 确保系统安装了 cargo,可以在终端使用 `cargo -V` 检查系统是否安装了 cargo,如果没有安装,请点击 [这里](./cargo.md#linux)
6+
按步骤安装构建工具
67
2. 从 GitHub 下载源码到本地:
78
- 若您是纯终端,建议使用 git 工具,请使用 `git clone https://github.com/TeamFlos/phira.git` 将仓库克隆到本地。
89
- 若您使用了桌面环境,您也可以在 Phira 仓库页面点击 Code 按钮选择 `Download ZIP` 将代码下载到本地,随后将代码解压到本地任意目录。
910
- __如果您无法连接到 GitHub,您也可以使用 git 加速网站提供的加速地址克隆与下载。__
10-
- __若您要构建指定版本的 Phira,请前往 [release](https://github.com/TeamFlos/phira/releases) 页面在 Assets 中选择下载 `Source code (tar.gz)` 到本地,解压到任意路径即可。__
11+
- __若您要构建指定版本的 Phira,请前往 [release](https://github.com/TeamFlos/phira/releases) 页面在 Assets
12+
中选择下载 `Source code (tar.gz)` 到本地,解压到任意路径即可。__
1113
- __警告:为了防止玄学问题,我们不建议路径中包含除了 ASCII 编码包含字符以外的任何字符。__
12-
3. 静态库文件,您可以 [直接下载](./prpr-avc.zip) 静态库文件,下载完成后直接解压到代码根目录下,如果提示覆盖文件,请点击覆盖。
13-
4. 构建过程需要库文件补充,输入以下命令即可:
14-
15-
> sudo apt update
16-
>
17-
> sudo apt install libasound2-dev
18-
>
19-
> sudo apt install libgtk-3-dev
14+
3. 静态库文件,您可以 [直接下载](https://www.nuanr-mxi.com/prpr-avc.zip) 静态库文件,下载完成后直接解压到代码根目录下,如果提示覆盖文件,请点击覆盖。
15+
4. 构建过程需要库文件补充,输入以下命令即可(以Debian分支系统为例):
16+
```shell
17+
sudo apt update
18+
sudo apt install libasound2-dev
19+
sudo apt install libgtk-3-dev
20+
```
2021

2122
## 开始构建
2223

2324
1. 打开终端,切换到代码根目录
2425
2. 输入 `cargo build -r --bin phira-main` ,直到编译完成。
25-
3. 复制 `.\assets\` 目录中的所有文件到 `.\target\release\assets\` ,至此,构建流程全部完成,您可以在带有桌面环境的情况下直接运行 `phira-main` 检查资源文件是否完整,若您没有桌面环境,程序将会闪退(实测 WSL 无法兼容,如果在 WSL 下运行将会闪退),至此,构建流程结束。
26+
3. 复制 `.\assets\` 目录中的所有文件到 `.\target\release\assets\` ,至此,构建流程全部完成,您可以在带有桌面环境的情况下直接运行
27+
`phira-main` 检查资源文件是否完整,若您没有桌面环境,程序将会闪退(实测 WSL 无法兼容,如果在 WSL 下运行将会闪退),至此,构建流程结束。
2628

27-
- __注意:在此文档编写时,代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases) 页面下载任意版本,获取缺失的资源文件__
29+
- _
30+
_注意:在此文档编写时,代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases)
31+
页面下载任意版本,获取缺失的资源文件__
2832

2933
## 常见问题
3034

src/phira_build_guide/README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# 构建指南
2-
Windows:[here](./Windows.md)<br>
3-
Linux:[here](./Linux.md)<br>
4-
macOS:[here](./macOS.md)<br>
5-
Android:[here](./Android.md)<br>
2+
Windows GNU:[here](./Windows_Gnu.md)
3+
Windows MSVC:[here](./Windows_Msvc.md)
4+
Linux:[here](./Linux.md)
5+
macOS:[here](./macOS.md)
6+
Android:[here](./Android.md)

src/phira_build_guide/StaticLib.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# 静态库(prpr-avc)
2+
3+
## 介绍
4+
- 此文件为 Phira 使用的用于解码视频的静态库,此静态库由 [FFmpeg commit hash 4a80db5fc2b1b134550ffbcb8fd3b7ce2ad734b3](https://github.com/FFmpeg/FFmpeg/commit/4a80db5fc2b1b134550ffbcb8fd3b7ce2ad734b3) 编译而来。
5+
- Phira 引用的静态库 FFmpeg 版本无需非常严格,使用什么版本由您决定,但是当您需要修改音视频解码相关功能并做出贡献时,请严格遵守这一版本,当前官方提供的[静态库](https://www.nuanr-mxi.com/prpr-avc.zip)都由此版本编译,由贡献者贡献的静态库可能版本不一致。
6+
- prpr-avc 仅包含最精简的 FFmpeg 组件,编译选项为:
7+
```shell
8+
--disable-everything \
9+
--enable-decoder=h264 \
10+
--enable-decoder=aac \
11+
--enable-decoder=aac_latm \
12+
--enable-decoder=flac \
13+
--enable-decoder=mp3 \
14+
--enable-decoder=vorbis
15+
```
16+
## 构建(以i686-pc-windows-gnu为例)
17+
18+
1. 下载 [FFmpeg n5.1.8 源代码(GitHub)](https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n5.1.8.tar.gz) 并解压到任意目录。
19+
- _如介绍所述,FFmpeg 版本无需特别严格,您也可以选择其他版本的 FFmpeg 进行构建,但是当您需要修改音视频解码相关功能并做出贡献时,请严格遵守这一版本_
20+
2.`sh` 上操作(此处使用msys2,注意要将ffmpeg源码复制到 `C:\msys64\home\您的用户名`,编译选项并不绝对,您可以自行查阅资料进行自定义)。
21+
22+
```sh
23+
cd FFmpeg-n5.1.8 && mkdir build && cd build
24+
25+
../configure \
26+
--disable-programs \
27+
--disable-doc \
28+
--disable-everything \
29+
--disable-debug \
30+
--arch=i686 \
31+
--target_os=mingw32 \
32+
--cross-prefix=i686-w64-mingw32-
33+
34+
make
35+
```
36+
37+
note:这里有个坑。。。如果报错的话尝试把 msys64\mingw32\bin 这个目录下的 i686-w64-mingw32-gcc-ar.exe , i686-w64-mingw32-gcc-nm.exe , i686-w64-mingw32-gcc-ranlib.exe 复制粘贴一份然后重命名成 i686-w64-mingw32-ar.exe , i686-w64-mingw32-nm.exe , i686-w64-mingw32-ranlib.exe
38+
39+
接着把build文件夹下的所有形如 `*.a` 的文件复制到 `phira\prpr-avc\static-lib\i686-pc-windows-gnu` 就可以啦
40+
41+
- __注意:以上操作仅能保证 cargo 正常编译并输出主程序,如需用于视频解码请自行在 configure 启用 protocol=file,decoders,parsers 等选项,如介绍所示__
42+
43+
## MSVC 构建静态库
44+
- 由于 ffmpeg 的 configure 本身就不为 MSVC 服务,其构建极具挑战性,我们不建议您自行构建 MSVC 版本的静态库,如果您需要 MSVC 版本的静态库,请 [直接下载](https://www.nuanr-mxi.com/prpr-avc.zip)
45+
- 如果您坚持挑战构建,请参考上述的 GNU 构建方法,配合 [这篇教程](https://github.com/ffiirree/ffmpeg-tutorials/blob/master/compile_on_windows.md) 进行构建操作。

src/phira_build_guide/Windows.md

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1 @@
11
# Windows
2-
3-
## 准备阶段
4-
5-
1. 确保系统安装了 cargo,可以在命令提示符(cmd)或者 PowerShell 使用 `cargo -V` 检查系统是否安装了 cargo。如果提示以下信息:
6-
- `'cargo' 不是内部或外部命令,也不是可运行的程序或批处理文件。`
7-
- `cargo : 无法将“cargo”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。`
8-
- 请点击 [这里](./cargo.md) 按步骤安装构建工具
9-
2. 从 GitHub 下载源码到本地:
10-
- 若您安装了 git 工具,请使用 `git clone https://github.com/TeamFlos/phira.git` 将仓库克隆到本地。
11-
- 若您没有安装 git 工具,您也可以在 Phira 仓库页面点击 Code 按钮选择 `Download ZIP` 将代码下载到本地,随后将代码解压到本地任意目录。
12-
- __如果您无法连接到 GitHub,您也可以使用 git 加速网站提供的加速地址克隆与下载。__
13-
- __若您要构建指定版本的 Phira,请前往 release 页面在 Assets 中选择下载 `Source code(zip)` 到本地,解压到任意路径即可。__
14-
- __警告:为了防止玄学问题,我们不建议路径中包含除了 ASCII 编码包含字符以外的任何字符。__
15-
3. perl,您可以在命令提示符(cmd)或者 PowerShell 使用 `perl -v` 检查系统是否安装了 perl,如果没有,请搜索并打开 `MSYS2 UCRT64` 输入 `pacman -S perl` 安装 perl
16-
4. 静态库文件,您可以 [直接下载](./prpr-avc.zip) 静态库文件,下载完成后直接解压到代码根目录下,如果提示覆盖文件,请点击覆盖。
17-
18-
## 开始构建
19-
20-
1. 在命令提示符(cmd)或者 PowerShell 切换到代码根目录(如 `D:\phira\`
21-
2. 在命令提示符(cmd)或者 PowerShell 使用 `cargo build -r --bin phira-main` ,如果不出意外,在 `openssl-sys(build)` 时,您将卡很久很久,请不要退出,这是正常的。
22-
3. 构建完成后,在 `.\target\release\` 目录下您可以找到编译完成的主程序
23-
4. 复制 `.\assets\` 目录中的所有文件到 `.\target\release\assets\` ,至此,构建流程全部完成,您可以直接运行 `phira-main.exe` 检查资源文件是否完整。
24-
25-
- __注意:在此文档编写时,代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases) 页面下载任意版本,获取缺失的资源文件__
26-
27-
## 32位版本
28-
29-
1. 在命令提示符(cmd)或者 PowerShell 切换到代码根目录(如 `D:\phira\`
30-
2. 下载上面的静态库文件解压到`phira\prpr-avc\static-lib`或自行构建
31-
3. 在命令提示符(cmd)或者 PowerShell 使用 `cargo build --target=i686-pc-windows-gnu --release --package phira-main` ,如果不出意外,在 `openssl-sys(build)` 时,您将卡很久很久,请不要退出,这是正常的。
32-
4. 构建完成后,在 `.\target\release\` 目录下您可以找到编译完成的主程序
33-
5. 复制 `.\assets\` 目录中的所有文件到 `.\target\release\assets\` ,至此,构建流程全部完成,您可以直接运行 `phira-main.exe` 检查资源文件是否完整。
34-
35-
- __注意:在此文档编写时,代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases) 页面下载任意版本,获取缺失的资源文件__
36-
37-
## 有关静态库的构建(以i686-pc-windows-gnu为例)
38-
39-
下载 [FFmpeg n5.1.8 源代码(GitHub))](https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n5.1.8.tar.gz) 并解压到任意目录
40-
41-
在sh上操作(此处使用msys2,注意要将ffmpeg源码复制到 `C:\msys64\home\您的用户名`
42-
43-
```sh
44-
cd FFmpeg-n5.1.8 && mkdir build && cd build
45-
../configure --disable-programs --disable-doc --disable-everything --disable-debug --arch=i686 --target_os=mingw32 --cross-prefix=i686-w64-mingw32-
46-
make
47-
```
48-
49-
note:这里有个坑。。。如果报错的话尝试把 msys64\mingw32\bin 这个目录下的 i686-w64-mingw32-gcc-ar.exe , i686-w64-mingw32-gcc-nm.exe , i686-w64-mingw32-gcc-ranlib.exe 复制粘贴一份然后重命名成 i686-w64-mingw32-ar.exe , i686-w64-mingw32-nm.exe , i686-w64-mingw32-ranlib.exe
50-
51-
接着把build文件夹下的所有形如 `*.a` 的文件复制到 `phira\prpr-avc\static-lib\i686-pc-windows-gnu` 就可以啦
52-
53-
- __注意:以上操作仅能保证 cargo 正常编译并输出主程序,如需用于视频解码请自行在 configure 启用 protocol=file,decoders,parsers 等选项__
54-
55-
## 常见问题
56-
57-
Q. 报错 `failed to send request: 操作超时`
58-
59-
A. 请检查网络环境,确保您可以正常访问 GitHub
60-
61-
Q. 报错 `failed to send request: 无法解析服务器的名称或地址`
62-
63-
A. 检查 DNS 或更换 DNS,更换后请刷新 DNS 缓存
64-
65-
Q. 构建过程中报错 `error: failed to run custom build command for openssl-sys v0.9.99`
66-
67-
A. 缺失 perl,请检查是否正确安装 perl 后再试
68-
69-
Q. 构建报错`error occurred: Failed to find tool. Is gcc.exe installed? (see https://github.com/rust-lang/cc-rs#compile-time-requirements for help)`
70-
71-
A. 请检查是否安装了 `MSYS2` 以及检查是否配置了环境变量
72-
73-
Q. 出现以下报错:
74-
75-
> Error building OpenSSL dependencies:
76-
>
77-
> Command: "make" "depend"
78-
>
79-
> Failed to execute: program not found
80-
81-
A. 缺失 `make` 指令,请前往 MSYS2 终端中使用 `pacman -S make` 安装此命令。
82-
83-
Q. 报错包含 `This perl inplementation doesn't produce lnix like paths`
84-
85-
A. 使用的 `perl` 不适用于 `gcc`,请删除原有 `perl` 的环境变量或者直接卸载原有的 `perl`
86-
87-
Q. 报错包含`undefined reference to libiconv`
88-
89-
A. 使用的 `libiconv` 有问题,请在 MSYS2 终端中使用 `pacman -S libiconv`
90-
91-
Q. 太麻烦了
92-
93-
A. 这样,直接去 [release](https://github.com/TeamFlos/phira/releases/latest) 页面下吧~~微软我真谢谢你~~
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Windows GNU(依赖GCC)
2+
3+
## 准备阶段
4+
5+
1. 确保系统安装了 cargo,可以在命令提示符(cmd)或者 PowerShell 使用 `cargo -V` 检查系统是否安装了 cargo。如果提示以下信息:
6+
- `'cargo' 不是内部或外部命令,也不是可运行的程序或批处理文件。`
7+
- `cargo : 无法将“cargo”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。`
8+
- 请点击 [这里](./cargo.md#windows-gnu-工具链) 按步骤安装构建工具
9+
2. 从 GitHub 下载源码到本地:
10+
- 若您安装了 git 工具,请使用 `git clone https://github.com/TeamFlos/phira.git` 将仓库克隆到本地。
11+
- 若您没有安装 git 工具,您也可以在 Phira 仓库页面点击 Code 按钮选择 `Download ZIP` 将代码下载到本地,随后将代码解压到本地任意目录。
12+
- __如果您无法连接到 GitHub,您也可以使用 git 加速网站提供的加速地址克隆与下载。__
13+
- __若您要构建指定版本的 Phira,请前往 release 页面在 Assets 中选择下载 `Source code(zip)` 到本地,解压到任意路径即可。__
14+
- __警告:为了防止玄学问题,我们不建议路径中包含除了 ASCII 编码包含字符以外的任何字符。__
15+
3. perl,您可以在命令提示符(cmd)或者 PowerShell 使用 `perl -v` 检查系统是否安装了 perl,如果没有,请搜索并打开
16+
`MSYS2 UCRT64` 输入 `pacman -S perl` 安装 perl
17+
4. 静态库文件,您可以 [直接下载](https://www.nuanr-mxi.com/prpr-avc.zip) 静态库文件,下载完成后直接解压到代码根目录下,如果提示覆盖文件,请点击覆盖。
18+
19+
## 开始构建
20+
21+
1. 在命令提示符(cmd)或者 PowerShell 切换到代码根目录(如 `D:\phira\`
22+
2. 在命令提示符(cmd)或者 PowerShell 使用 `cargo build -r --bin phira-main` ,如果您在编译过去的版本,在
23+
`openssl-sys(build)` 时,终端将会停滞很长一段时间,请不要退出,这是正常的。
24+
3. 构建完成后,在 `.\target\release\` 目录下您可以找到编译完成的主程序
25+
4. 复制 `.\assets\` 目录中的所有文件到 `.\target\release\assets\` ,至此,构建流程全部完成,您可以直接运行 `phira-main.exe`
26+
检查资源文件是否完整。
27+
28+
- __注意:在此文档编写时,代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases)
29+
页面下载任意版本,获取缺失的资源文件__
30+
31+
## 32位版本
32+
33+
1. 在命令提示符(cmd)或者 PowerShell 切换到代码根目录(如 `D:\phira\`
34+
2. 下载上面的静态库文件解压到`phira\prpr-avc\static-lib`[自行构建](./StaticLib.md#构建以i686-pc-windows-gnu为例)
35+
3. 在命令提示符(cmd)或者 PowerShell 使用 `cargo build --target=i686-pc-windows-gnu --release --package phira-main`
36+
,如果不出意外,在 `openssl-sys(build)` 时,您将卡很久很久,请不要退出,这是正常的。
37+
4. 构建完成后,在 `.\target\release\` 目录下您可以找到编译完成的主程序
38+
5. 复制 `.\assets\` 目录中的所有文件到 `.\target\release\assets\` ,至此,构建流程全部完成,您可以直接运行 `phira-main.exe`
39+
检查资源文件是否完整。
40+
41+
- __注意:在此文档编写时,代码目录下的资源文件并不完整,如果您发现主程序闪退,您可以前往 [release](https://github.com/TeamFlos/phira/releases)
42+
页面下载任意版本,获取缺失的资源文件__
43+
44+
## 有关静态库的构建
45+
46+
- 已移动到[静态库页](./StaticLib.md)
47+
48+
## 常见问题
49+
50+
Q. 报错 `failed to send request: 操作超时`
51+
52+
A. 请检查网络环境,确保您可以正常访问 GitHub
53+
54+
Q. 报错 `failed to send request: 无法解析服务器的名称或地址`
55+
56+
A. 检查 DNS 或更换 DNS,更换后请刷新 DNS 缓存
57+
58+
Q. 构建过程中报错 `error: failed to run custom build command for openssl-sys v0.9.99`
59+
60+
A. 缺失 perl,请检查是否正确安装 perl 后再试
61+
62+
Q. 构建报错
63+
`error occurred: Failed to find tool. Is gcc.exe installed? (see https://github.com/rust-lang/cc-rs#compile-time-requirements for help)`
64+
65+
A. 请检查是否安装了 `MSYS2` 以及检查是否配置了环境变量
66+
67+
Q. 出现以下报错:
68+
```shell
69+
Error building OpenSSL dependencies:
70+
71+
Command: "make" "depend"
72+
73+
Failed to execute: program not found
74+
```
75+
A. 缺失 `make` 指令,请前往 MSYS2 终端中使用 `pacman -S make` 安装此命令。
76+
77+
Q. 报错包含 `This perl inplementation doesn't produce lnix like paths`
78+
79+
A. 使用的 `perl` 不适用于 `gcc`,请删除原有 `perl` 的环境变量或者直接卸载原有的 `perl`
80+
81+
Q. 报错包含`undefined reference to libiconv`
82+
83+
A. 使用的 `libiconv` 有问题,请在 MSYS2 终端中使用 `pacman -S libiconv`
84+
85+
Q. 太麻烦了
86+
87+
A. 这样,你去 [MSVC构建方式](./Windows_Msvc.md) 吧,稍微简单一点点。

0 commit comments

Comments
 (0)