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. Spring Boot 系列:最新版优雅停机详解

    爱生活,爱编码,本文已收录架构技术专栏关注这个喜欢分享的地方. 开源项目: 分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjiankethree/cub ...

  2. 自定义 Spring Boot Starter

    关于Starter Spring Boot秉承"约定大于配置"的开发方式,使得我们基于Spring Boot开发项目的效率变得十分高.相信使用过Spring Boot的小伙伴都会发 ...

  3. 宜宾1178.9873(薇)xiaojie:宜宾哪里有xiaomei

    宜宾哪里有小姐服务大保健[微信:1178.9873倩儿小妹[宜宾叫小姐服务√o服务微信:1178.9873倩儿小妹[宜宾叫小姐服务][十微信:1178.9873倩儿小妹][宜宾叫小姐包夜服务][十微信 ...

  4. day31 Pyhton 总结

    # 什么是封装?     # 广义上(大家认为的) :         # 把一类事务的相同的行为和属性归到一个类中 # class Dog: #     def bite(self):pass    ...

  5. Spring Aop 详解一

    Aop 是一个编程思想,最初是一个理论,最后落地成了很多的技术实现. 我们写一个系统,都希望尽量少写点儿重复的东西.而很多时候呢,又不得不写一些重复的东西.比如访问某些方法的权限,执行某些方法性能的日 ...

  6. zookeeper的管理功能

    一,查看当前zookeeper的版本 [liuhongdi@localhost ~]$ echo stat|nc 127.0.0.1 2181 Zookeeper version: 3.5.6-c11 ...

  7. 学会这三个命令,你就不再是git只会用三板斧的菜鸟了

    前言 在之前的文章当中我们介绍了最基本的git add.git commit和git push的用法以及基本原理,还介绍了gitignore文件的设置方法,从而让我们可以使用git add .来添加我 ...

  8. maven 配置文件 settings.xml pom.xml

    maven涉及的配置文件一般有三个:(作用范围依次减小,优先级依次升高) 全局配置(maven安装包中):${M2_HOME}/conf/settings.xml 用户配置(该文件是拷贝全局配置而来的 ...

  9. Nginx的正向代理-反向代理-负载均衡

      正向代理与反向代理[总结]   1.前言 最近工作中用到反向代理,发现网络代理的玩法还真不少,网络背后有很多需要去学习.而在此之前仅仅使用了过代理软件,曾经为了访问google,使用了代理软件,需 ...

  10. Django( 学习第三部 Django的url路由层)

    目录 url路由层 路由匹配(有名分组与无名分组) 反向解析 路由分发 名称空间(了解) Django版本区别 url 路由匹配 注意事项: url方法,第一个参数是正则表达式,只要第一个参数能够匹配 ...