• Centos 源码编译 tigervnc


    我们安装的 tigervnc 会安装两个 vnc 的 server,一个叫 vncserver,另外一个叫 x0vncserver,前者依赖 Xvnc 工具,这个工具的编译方法也在那个BUILDING.txt 里,两个都能用,如果需要编译 Xvnc 可以跳到后面去

    安装x0vncserver

    1、下载源码

    Releases · TigerVNC/tigervnc · GitHub

    2、安装依赖 (参考源码目录里的 BUILDING.txt)

    我之前安装过一些依赖,下面这个依赖不一定全,具体还是参照上面的 BUILDING.txt

    1. yum install zlib-devel cmake libjpeg-turbo-devel make libtool gcc-c++
    2. # 解决这个编译问题,这个不安装,使用 x0vncserver 就只能看不能操作
    3. # No XTest extension. x0vncserver will be view-only.
    4. yum install libXtst-devel
    5. # 解决这个编译问题
    6. # No Xrandr extension. x0vncserver will not be able to resize session.
    7. yum install libXrandr-devel
    8. # 解决这个编译问题
    9. # No DAMAGE extension. x0vncserver will have to use the slower polling method.
    10. yum install libXdamage-devel
    11. # 貌似 fltk 可选安装
    12. yum install fltk-devel
    13. # 其中还提到 tls
    14. yum install gnutls-devel

    3、安装代码

    1. # 进入源码目录,root权限
    2. cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -Wno-dev .
    3. make
    4. make install

    上面路径默认安装到 /usr

    4、使用 tigervnc

    首先打开图形化的终端(非xshell这种终端),需要桌面的

    接着在终端设置vnc密码,中间有个 view-only,输入n 就行了

    vncpasswd

    启动命令 (默认端口 5900)

    x0vncserver  PasswordFile=/root/.vnc/passwd
    

    中间那个文件是我们设置vncpassword之后,就会自动创建到你的用户目录下

    如果你开启服务后没有报错,然后vnc客户端又连不上,看看是不是防火墙之类的网络问题

    systemctl stop firewalld

    ----------------------------------------------------------分界线-----------------------------------------------------------

    编译Xvnc

    安装依赖 (前文中 x0vncserver 的依赖也要安装)

    1. yum install libdrm-devel libxkbfile-devel libXfont2-devel libxshmfence-devel doxygen xmlto fop xorg-x11-xtrans-devel xorg-x11-server-source patch
    2. # 解决这个编译问题
    3. # No package 'pixman-1' found
    4. yum install pixman-devel
    5. # 解决这个编译问题
    6. # No package 'gl' found
    7. yum install xorg-x11-server-devel
    8. # 解决这个编译问题
    9. # utils.c:1992:31: fatal error: security/pam_appl.h: No such file or directory
    10. yum install pam-devel

    安装过程

    1、解压tigervnc源码

    2、进入tigervnc源码目录

    3、执行 (这里不创建 build 目录)(先安装x0vncserver)

    1. cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -Wno-dev .
    2. make
    3. make install

    4、执行

    1. cp -R /usr/share/xorg-x11-server-source/* unix/xserver/
    2. cd unix/xserver/

    xorg-x11-server-source 是我们yum安装的包,我们需要看看它的版本

    1. # yum list | grep xorg-x11-server-source
    2. xorg-x11-server-source.noarch 1.20.4-18.el7_9 @updates

    我的版本是1.20,接下来执行的命令就跟这个版本有关

    5、执行 (120指的是xorg-x11-server-source的版本,其他版本要换成其他的)

    patch -p1 < /root/tigervnc-1.10.0/unix/xserver120.patch

    (/root/tigervnc-1.10.0 是源码目录,你可以替换成你的源码的目录,后面也是如此)

    6、执行

    1. autoreconf -fiv
    2. ./configure --with-pic --without-dtrace --disable-static --disable-dri \
    3. --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
    4. --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
    5. --disable-dri2 --enable-glx \
    6. --disable-config-hal --disable-config-udev \
    7. --with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
    8. --with-xkb-path=/usr/share/X11/xkb \
    9. --with-xkb-output=/var/lib/xkb \
    10. --with-xkb-bin-directory=/usr/bin \
    11. --with-serverconfig-path=/usr/lib64/xorg \
    12. --disable-devel-docs \
    13. --prefix=/usr/

    这个编译方法在源码目录里的 BUILDING.txt,我删减了一些用不了的编译选项,增加了 --prefix=/usr/ ,即安装目录,和 --disable-devel-docs ,后面这个是禁用文档,因为编译的时候会报错,也用不上就禁了,报错下面这个

    make[2]: *** 没有规则可以创建“all-am”需要的目标“Xserver-spec.xml”。 停止。

    7、最后

    1. make TIGERVNC_SRCDIR=/root/tigervnc-1.10.0/
    2. make install

    启动命令

    vncserver 的启动关闭命令是,下面的1是端口,代表5901,如果是2就是5902,以此类推,记得设置 vncpassword

    1. # 启动
    2. vncserver :1
    3. # 关闭
    4. vncserver -kill :1

    yum 直接安装的 tigervnc 是带Xvnc的,也就是能用vncserver (部分包有 Xvnc 没有 vncserver)

    yum install tigervnc-server-minimal
    

    未解决的问题

    configure的时候报错缺少

    1. configure: WARNING:
    2. ***********************************************
    3. Neither HAL nor udev backend will be enabled.
    4. Input device hotplugging will not be available!
    5. ***********************************************

    看了一下centos的源没有这个 hal 和 udev 的库,就没有安装

    可能出现的问题

    1、找不到头文件

    dri3.c:29:24: fatal error: drm_fourcc.h: No such file or directory

    执行

    cp -r /usr/include/libdrm/* /usr/include/
    

    2、先编译 tigervnc,不然报错

    make[2]: *** 没有规则可以创建“libvnc.la”需要的目标“/root/tigervnc-1.10.0//common/network/libnetwork.la”。 停止。

     首先是确保你做了第二步的cmake和make,其次,检查你是否是创建了build目录再cmake的,如果你不小心创建了,这种情况下需要手动指定build目录在继续编译(报错之后)(tigervnc 官方说不喜欢cmake之前创建目录,喜欢直接源码使用cmake)

    TIGERVNC_BUILDDIR=/root/tigervnc-1.10.0/build

  • 相关阅读:
    面试算法问题
    一个敏感词检查功能是怎么来的
    IDEA debug调试基础
    【智慧医疗】Springboot+Vue+Element-UI前后端分离的医疗管理平台
    光伏无人机巡检主要有些什么功能和特点?
    ClickHouse多级磁盘和冷热数据分离实践
    STM32H7 DMAMUX 阅读笔记
    【教学类-15-01】20221115《学号(姓名)描字帖-A4横版-竖切》(中班)
    mysql(01)
    NIO流—理解Buffer、Channel概念和NIO的读写操作
  • 原文地址:https://blog.csdn.net/qq_38781075/article/details/127925168