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-dev

2. 编译安装 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_PATH

3. 下载 scrcpy 4.1

cd ~ git clone --depth 1 --branch v4.1 \ https://github.com/Genymobile/scrcpy.git scrcpy-4.1 cd ~/scrcpy-4.1

4. 修复 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.c

5. 编译安装

./install_release.sh

如果之前已经构建失败,可以清理后重新运行:

rm -rf build-auto ./install_release.sh

如果已经完成 Meson 配置,只差继续编译:

ninja -C build-auto sudo ninja -C build-auto install sudo ldconfig

6. 检查版本

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-dev

2. 下载 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.4

3. 编译安装

./install_release.sh

如果之前构建过:

rm -rf build-auto ./install_release.sh

4. 检查版本

hash -r scrcpy --version

应该显示:

scrcpy 3.3.4

四、两个版本的主要区别

项目scrcpy 4.1scrcpy 3.3.4
图形库SDL3SDL2
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 zip

3. 下载匹配的 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-server

5. 测试

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)。