scrcpy的编译方法(window,UOS)
下面按你这台UOS、GCC 8.3、Meson 0.61.2的环境总结。建议两个版本分别放在不同目录,避免构建缓存和 server 文件混用。
一、公共编译依赖
两个版本都先安装:
sudo apt update sudo apt install build-essential git wget adb ffmpeg \ pkg-config meson ninja-build cmake \ libavcodec-dev libavdevice-dev libavformat-dev \ libavutil-dev libswresample-dev \ libusb-1.0-0 libusb-1.0-0-dev libv4l-dev二、编译 scrcpy 4.1
scrcpy 4.1 需要SDL3。UOS 软件源通常没有libsdl3-dev,需要手动编译 SDL 3.4.12。
1. 安装 SDL3 编译依赖
sudo apt install libasound2-dev libpulse-dev libdbus-1-dev \ libx11-dev libxext-dev libxrandr-dev libxcursor-dev \ libxfixes-dev libxi-dev libxss-dev libxtst-dev \ libxkbcommon-dev libgl1-mesa-dev2. 编译安装 SDL 3.4.12
cd ~ git clone --depth 1 --branch release-3.4.12 \ https://github.com/libsdl-org/SDL.git SDL3-3.4.12 cmake -S SDL3-3.4.12 -B SDL3-3.4.12/build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DSDL_TESTS=OFF cmake --build SDL3-3.4.12/build --parallel "$(nproc)" sudo cmake --install SDL3-3.4.12/build sudo ldconfig确认 SDL3:
pkg-config --modversion sdl3应该显示:
3.4.12如果找不到,执行:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH3. 下载 scrcpy 4.1
cd ~ git clone --depth 1 --branch v4.1 \ https://github.com/Genymobile/scrcpy.git scrcpy-4.1 cd ~/scrcpy-4.14. 修复 GCC 8.3 的 static_assert 兼容问题
scrcpy 4.1 有一处单参数static_assert,GCC 8.3 编译不过,执行:
sed -i 's|static_assert(sizeof(info->device_name) == SC_DEVICE_NAME_FIELD_LENGTH);|static_assert(sizeof(info->device_name) == SC_DEVICE_NAME_FIELD_LENGTH, "device_name size mismatch");|' app/src/server.c确认修改:
grep -n "static_assert(sizeof(info->device_name)" app/src/server.c5. 编译安装
./install_release.sh如果之前已经构建失败,可以清理后重新运行:
rm -rf build-auto ./install_release.sh如果已经完成 Meson 配置,只差继续编译:
ninja -C build-auto sudo ninja -C build-auto install sudo ldconfig6. 检查版本
hash -r command -v scrcpy scrcpy --version应该显示:
scrcpy 4.1三、编译 scrcpy 3.3.4
scrcpy 3.3.4 使用SDL2,更适合旧版 UOS,不需要编译 SDL3,也不需要修改static_assert。
1. 安装 SDL2
sudo apt install libsdl2-2.0-0 libsdl2-dev2. 下载 scrcpy 3.3.4
cd ~ git clone --depth 1 --branch v3.3.4 \ https://github.com/Genymobile/scrcpy.git scrcpy-3.3.4 cd ~/scrcpy-3.3.43. 编译安装
./install_release.sh如果之前构建过:
rm -rf build-auto ./install_release.sh4. 检查版本
hash -r scrcpy --version应该显示:
scrcpy 3.3.4四、两个版本的主要区别
| 项目 | scrcpy 4.1 | scrcpy 3.3.4 |
|---|---|---|
| 图形库 | SDL3 | SDL2 |
| UOS 软件源 | 通常没有 SDL3 | 通常自带 SDL2 |
| 是否需编译 SDL | 通常需要 | 不需要 |
| GCC 8.3 补丁 | 需要修改一处static_assert | 不需要 |
| 安装难度 | 较高 | 较低 |
| 建议用途 | 需要 4.x 新功能 | 旧系统稳定投屏 |
如果只是普通手机投屏和控制,建议在这台旧版 UOS 上使用3.3.4;需要弹性虚拟屏、VP8/VP9 等新功能时再使用4.1。
两个版本都会安装到/usr/local/bin/scrcpy,所以最后安装的版本会覆盖前一个版本。客户端与scrcpy-server必须版本一致,不要手动混用。官方说明可参考:构建文档和4.1 发布说明。
下面介绍windows下编译方法
这个目录是scrcpy 4.1,Windows 下推荐使用本机已经安装的MSYS2 MinGW64编译。当前缺少 SDL3、libusb、Meson 和 Ninja。
1. 打开 MSYS2 MinGW x64
运行:
C:\msys64\mingw64.exe不要使用普通 PowerShell 或 MSYS 终端。
2. 安装依赖
pacman -Syu pacman -S --needed \ mingw-w64-x86_64-sdl3 \ mingw-w64-x86_64-ffmpeg \ mingw-w64-x86_64-libusb \ mingw-w64-x86_64-gcc \ mingw-w64-x86_64-pkgconf \ mingw-w64-x86_64-meson \ mingw-w64-x86_64-ninja \ mingw-w64-x86_64-make \ curl zip3. 下载匹配的 scrcpy-server
cd /d/working/hegui/COMP-BOLIANPC/LINUX_package/scrcpy curl -L \ -o scrcpy-server-v4.1 \ https://github.com/Genymobile/scrcpy/releases/download/v4.1/scrcpy-server-v4.1 echo "deacb991ed2509715160ffdc7907e47b4160eb30d1566217e9047fd5b8850cae scrcpy-server-v4.1" \ | sha256sum -c -应当显示OK。
4. 编译 Windows 64 位客户端
rm -rf build-win64 meson setup build-win64 \ --buildtype=release \ --strip \ -Db_lto=true \ -Dportable=true \ -Dprebuilt_server=scrcpy-server-v4.1 ninja -C build-win64生成的主要文件:
build-win64/app/scrcpy.exe build-win64/server/scrcpy-server5. 测试
cp build-win64/server/scrcpy-server build-win64/app/ cd build-win64/app ./scrcpy.exe --version不过,要复制给其他 Windows 电脑运行,还需要把/mingw64/bin中依赖的 FFmpeg、SDL3、libusb 等 DLL,以及下面三个 ADB 文件一起打包:
adb.exe AdbWinApi.dll AdbWinUsbApi.dll这些 ADB 文件可以从这里取得:
C:\Users\VISION16Pro\AppData\Local\Android\Sdk\platform-tools项目自己的官方编译说明位于 [doc/build.md](D:/working/hegui/COMP-BOLIANPC/LINUX_package/scrcpy/doc/build.md),Windows 发布构建逻辑位于 [release/build_windows.sh](D:/working/hegui/COMP-BOLIANPC/LINUX_package/scrcpy/release/build_windows.sh)。