VNC是一种远程图形化桌面协议, 而TigerVNC(Tiger Virtual Network Computing)是VNC协议的一个实现。通过TigerVNC应用, 我们可以实现跨平台的远程桌面控制。TigerVNC的项目地址如下所示:
https://github.com/TigerVNC/tigervnc。
有一点需要注意, 由于TigerVNC的 Windows 端已经没人维护了, 在使用过程中可能会出现问题。
下面介绍一下如何在Windows平台下构建TigerVNC项目:
在Windows平台下构建需要使用 mingw 编译器, 推荐使用MSYS2来提供类mingw编译环境。
安装好MSYS2之后, 进入MSYS2-MINGW64 / MSYS2-MINGW32 终端, 配置开发环境。
配置开发环境
1.配置镜像源
由于Mingw配置开发环境的时候, 需要下载一些软件包, 所以为了提升下载速度我们需要更新一下对应的镜像源。
更新源的地址信息在 InstallDir\msys64\etc\pacman.d目录中, 文件列表为:mirrorlist.mingw32、mirrorlist.mingw64 和 mirrorlist.msys。
在mirrorlist.msys文件的最上面添加下面的镜像地址:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
在mirrorlist.mingw32文件的最上面添加下面的镜像地址:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
在mirrorlist.mingw64文件的最上面添加下面的镜像地址:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
2.更新源信息
源地址更新完毕之后, 在对应的终端上, 执行更新命令来同步源信息
pacman -Syu
3.安装对应的依赖库
pacman -Syu
pacman -S make yasm diffutils pkg-config
pacman -S mingw-w64-i686-cmake
pacman -S mingw-w64-i686-fltk
pacman -S mingw-w64-i686-gnutls
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-i686-make
pacman -S mingw-w64-i686-pixman
4.修改编译依赖库
在静态编译过程中tigerVNC会报各种错误异常, 有的时候错误是依赖库出了问题, 这里我们修改一下依赖库文件; 文件地址为:tigervnc\cmake\StaticBuild.cmake。 修改内容如下:
# 第68行
set(GNUTLS_LIBRARIES "-Wl,-Bstatic -lgnutls -lpthread -lzstd -lbrotlienc -lbrotlicommon -lbrotlidec")
# 第184行
if(WIN32)
set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread")
5.执行编译
# 创建构建目录
cd tigerVNC
mkdir build
cd build
# 指定GNUTLS目录地址 构建方式为静态编译
cmake -G "MinGW Makefiles" -DGNUTLS_INCLUDE_DIR=/mingw64/include -DGNUTLS_LIBRARY=/mingw64/lib/libgnutls.a -DBUILD_STATIC=1 ../
# 进行构建
mingw32-make.exe
运行程序
tigerVNC生成的各个应用的作用:
vncviewer # 是跨平台的TigerVNC客户端 使用FLTK编写
winvnc # 是Windows系统下的tigerVNC的服务端
vncconfig # 用来配置和控制正在运行的VNC
在被控端启动winvcn等待被控, 然后在控制端启动vncviewer并输入被控端的IP地址就可以实现远程控制了。