tigervnc 编译
2024-09-08 01:38:55
1.根据BUILDING.txt安装依赖(建议使用默认路径)
其中X11 development kit使用
yum install libX11*
2.修改CMakeList.txt
在前面添加
set(FLTK_BASE_LIBRARY "/usr/local/lib/libfltk.so")
set(FLTK_IMAGES_LIBRARY "/usr/local/lib/libfltk_images.so")
set(FLTK_INCLUDE_DIR "/usr/local/include/")
3.生成目标
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -Wno-dev
make
sudo make install
编译时可能会出现符号链接的问题,建议将依赖生成为动态链接文件。
如果使用64位环境编译,可能某些依赖库会只生成了32位链接库文件,所以会出现符号找不到的情况。
我使用 tigervnc-1.6.0版本编译通过,建议使用该版本,不同版本具体情况可能不同。
4.运行
我的server端只用到了x0vncserver
由于编译时没有添加TLS,所以服务端开启为:
x0vncserver SecurityTypes=None PasswordFile=/home/yang/.vnc/passwd
如果没有添加
SecurityTypes=None
客户端链接时,回报错:
gnutls_set_priority_direct failed
---------------------------------------------------------------------------------------------------------------------------------------
Xvnc编译
准备包:
xorg-server-1.7.4.tar.gz
tigervnc-1.6.0.tar.gz
相关依赖
bigreqsproto-1.1.2.tar.bz2 kbproto-1.0.7.tar.bz2 randrproto-1.5.0.tar.bz2 xextproto-7.3.0.tar.bz2
compositeproto-0.4.tar.bz2 libfontenc-1.1.4.tar.bz2 renderproto-0.11.tar.bz2 xproto-7.0.31.tar.bz2
damageproto-1.2.1.tar.bz2 libpciaccess-0.16.tar.bz2 resourceproto-1.2.0.tar.bz2 xtrans-1.4.0.tar.bz2
fixesproto-5.0.tar.bz2 libXau-1.0.9.tar.bz2 scrnsaverproto-1.2.2.tar.bz2
fontsproto-2.1.3.tar.bz2 libXfont-1.5.4.tar.bz2 videoproto-2.3.3.tar.bz2
inputproto-2.3.tar.bz2 libxkbfile-1.1.0.tar.bz2 xcmiscproto-1.2.2.tar.bz2 util-macros-1.3.0.tar.bz2
(1)安装依赖
BUILDDIR=$(pwd)
for package in $(ls ./tar)
do
packagedir=$(echo ${package} | sed s/.tar.bz2//)
tar xf ./tar/${package} -C ./lib
cd ./lib/${packagedir}
./configure --prefix=/usr
make
sudo make install
cd ${BUILDDIR}
done
(2)合并代码,并打补丁
cd ${tigervnc-source}/unix/xserver
cp ${xorg-server-source}/* ./ -R
patch -p1 < ../xserver17.patch
其中 xserver.patch 的版本是通过查看 本地的Xorg版本确定,使用下面命令查看Xorg版本
Xorg -version
(3)配置,编译
autoreconf -fiv
./configure --with-pic --without-dtrace --disable-static --disable-dri \
--disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
--disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
--disable-config-dbus --disable-config-hal \
--disable-dri2 --enable-install-libxf86config --enable-glx \
--with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
--with-fontdir=/usr/share/X11/fonts \
--with-xkb-path=/usr/share/X11/xkb \
--with-xkb-output=/var/lib/xkb \
--with-xkb-bin-directory=/usr/bin \
--with-serverconfig-path=/usr/lib/xorg \
--with-dri-driver-path=/usr/lib/dri \
--prefix=/usr
make
出现错误
(1)
vncModule.c: 在函数‘vncModuleInit’中:
vncModule.c:94: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
解决
make CFLAGS+=-std=c99
(2)
vncHooks.c: 在函数‘vncHooksCopyArea’中:
vncHooks.c:1123: 错误:‘else’之前没有‘if’
解决
将
./hw/vnc/vncHooks.c +1123
if ((w == 0) || (h == 0))
REGION_NULL(pGC->pScreen, &dst);
修改为
if ((w == 0) || (h == 0))
{ \
(&dst)->extents = miEmptyBox; \
(&dst)->data = &miEmptyData; \
}
(3)
Input.c: 在函数‘vncPointerButtonAction’中:
Input.c:135: 警告:隐式声明函数‘enqueueEvents’
Input.c: 在文件层:
Input.c:197: 警告:与‘enqueueEvents’类型冲突
Input.c:198: 错误:对‘enqueueEvents’的静态声明出现在非静态声明之后
Input.c:135: 附注:‘enqueueEvents’的上一个隐式声明在此
解决
./hw/vnc/Input.c
前面声明
#if XORG < 111
static void enqueueEvents(DeviceIntPtr dev, int n);
#endif
最新文章
- 北大poj-1091
- python web编程-概念预热篇
- .NET Framework (代码库、通用类型系统CTS、CLR) 简介
- 【LeetCode OJ】Binary Tree Level Order Traversal II
- HiveServer2 的jdbc方式创建udf的修改(add jar 最好不要使用),否则会造成异常: java.sql.SQLException: Error while processing statement: null
- 学java入门到精通,不得不看的15本书
- php获取网页中图片并保存到本地的代码
- POJ 1363 Rails(栈)
- Linux ssh安全设置
- 讨论LSTM和RNN梯度消失问题
- 五.	Java集合概要
- C++内存布局详解
- java常用集合总结
- Linq小整理
- Spring AOP 前置通知
- PAT乙级考前总结(四)
- python基础自学 第一天
- loadrunner&#160;脚本优化-关联函数web_reg_save_param()函数详解
- JavaScript之Dom操作【删除当前节点】
- [sql]mysql参数(配置)手册
热门文章
- 多测师讲解python _函数中变量_高级讲师肖sir
- day15 Pyhton学习
- hugo主题文档-manpassant
- centos8平台用NetworkManager/nmcli管理网络
- 第十三章 nginx代理服务
- 第五章 Linux操作系统关机、重启、注销及其查看ip命令
- node服务器基本搭建
- swagger使用随笔
- 阿里技术专家十五问,真题面试刀刀见肉,快来和阿里面试官battle
- poj1639,uva1537,uvalive2099,scu1622,fzu1761 Picnic Planning (最小限制生成树)