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

tigervnc 编译的更多相关文章

  1. TigerVNC编译安装

    TigerVNC official site:http://www.linuxfromscratch.org/blfs/view/svn/xsoft/tigervnc.html TigerVNC版本: ...

  2. 用windows远程连接linux桌面(使用tightvnc或者tigervnc)

    一.安装tightvnc: tightvnc的安装在安装包中有详细的说明(README文件) 首先你要确保linux已经安装jpeg和zlib库, 2.编译 执行如下两个命令: [root@local ...

  3. windows远程连接linux桌面---使用tightvnc或者tigervnc

    一.安装tightvnc: tightvnc的安装在安装包中有详细的说明(README文件) 首先你要确保linux已经安装jpeg和zlib库, 2.编译 执行如下两个命令: [root@local ...

  4. 内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)

    内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境 背景 内网开发机是 win7,只能安装 node 14 以下,而 spug 的文档项目采用的是 Facebook ...

  5. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  6. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  7. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  8. CENTOS 6.5 平台离线编译安装 Mysql5.6.22

    一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...

  9. Android注解使用之注解编译android-apt如何切换到annotationProcessor

    前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...

随机推荐

  1. 在shell中截取心仪的字符串

    file=/dir1/dir2/dir3/my.file.txt ${file#*/} 去掉左边 ${file##*/} 去掉左边最后一个 ${file%/*} 去掉右边 ${file%%/*} 去掉 ...

  2. 用CentOS 7自制Vagrant Box文件

      写在前面 利用vagrant保持开发生产环境一致是一个很好的方法,不过vagrant官网上的box文件下载是真的很慢,因此,这里教大家如何自制box文件. 这篇文章你会接触到: vagrant使用 ...

  3. logstash 过滤filter

    logstash过滤器插件filter详解及实例   1.logstash过滤器插件filter 1.1.grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解 ...

  4. php安装kafka扩展

    https://blog.csdn.net/zsl10/article/details/78743335 https://blog.csdn.net/lw545034502/article/detai ...

  5. docker19.03使用数据卷

    一,查看当前的docker版本 [root@localhost data]# docker --version Docker version 19.03.8, build afacb8b 说明:刘宏缔 ...

  6. 使用原生js模拟jQuery选择器,实现new方法,兼容ie5

    // 考虑到兼容ie5,未使用es6语法 /* 使用方法: 在<head>标签中(需使用ready方法): <script src="./jQuery2.js"& ...

  7. 忘记MySQL密码怎么办?一招教你搞定!

    在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错.那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急 ...

  8. 抽空学学KVM(七):虚拟机快照和克隆

    前几天学写了KVM中qume-info命令的使用,今天学学在虚拟化里面用处广泛的快照和克隆功能,snapshot和virt-clone.对于snapshot命令的使用其实很简单.进入virsh界面以后 ...

  9. 团体程序设计天梯赛-练习集 L1-007 念数字

    - - ->博主推荐,学生党.程序员必备,点击查看- - - >>>>> 热门文章推荐 以下50道算法编程题访问量较大,包含常用语法,数据结构,解题思路等等,作为C ...

  10. short i =1; i=i+1与short i=1; i+=1的区别

    很典型的一到JAVA 基础面试题,上次面试遇到的,现在记录一下. short i =1; i=i+1;short i=1;i+=1;这两有什么区别呢 ?对两个容量不一样的数据类型的变量进行算术运算时, ...