交叉编译Spice-gtk

Fedora环境

  • 编译环境

    操作系统: 64位 Fedora23

  • 下载源文件

    spice-gtk、spice-protocol

  • 安装依赖
$ sudo yum install -y dh-autoreconf.noarch gtk-doc.noarch icoutils.x86_64 perl-Text-CSV.noarch vala-tools.x86_64 gtk3-devel.x86_64 openssl-devel.x86_64 celt051-devel.x86_64 gstreamer1*-devel libjpeg-turbo-devel.x86_64 usbredir-devel.x86_64
$ sudo pip install pyparsing
  • 设置环境变量
$ export PREFIX="$HOME/gnome/usr/local/gnome"
$ export ACLOCAL="aclocal -I $PREFIX/share/aclocal"
$ export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig:$PREFIX/lib64/pkgconfig"
$ export CFLAGS=" -I$PREFIX/include"
$ export CPPFLAGS=" -I$PREFIX/include"
$ export LDFLAGS=" -L$PREFIX/lib -L$PREFIX/lib -Wl,--rpath -Wl,/usr/local/gnome/lib -L$PREFIX/lib64 -Wl,--rpath -Wl,/usr/local/gnome/lib64"
  • 编译spice-protocol
$ ./autogen.sh --prefix=$PREFIX
$ make
$ make install
  • 编译spice-gtk
### 3.29-4.8的某处修改会导致32位spicy崩溃
$ git reset --hard 02c4cd59a45844b938a8c5b647538d01d4f040a0
$ ./autogen.sh --prefix=$PREFIX
$ ./configure --prefix=$PREFIX --enable-maintainer-mode --with-gtk=3.0 --enable-vala --enable-usbredir=yes --with-sasl=no --enable-gstaudio
$ make
$ make install

ubuntu环境

方法一

  • 编译环境

    操作系统: 64位 Ubuntu 14.04 LTS (trusty)

  • 安装依赖
$ sudo apt-get install -y build-essential autoconf libtool automake autopoint intltool libgtk-3-dev libcurl4-openssl-dev libjpeg-dev libusbredirparser-dev libusbredirhost-dev libusb-1.0-0-dev valac-0.20 libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libspice-protocol-dev libpulse-dev libgudev-1.0-dev
  • 编译celt
$ wget http://downloads.us.xiph.org/releases/celt/celt-0.5.1.3.tar.gz
$ tar xzf celt-0.5.1.3.tar.gz
$ cd celt-0.5.1.3/
$ ./configure
$ make
$ sudo make install
  • 编译spice-gtk
$ wget https://www.spice-space.org/download/gtk/spice-gtk-0.18.tar.bz2
$ tar xjf spice-gtk-0.18.tar.bz2
$ cd spice-gtk-0.18
$ ./configure --enable-maintainer-mode --with-gtk=3.0 --enable-vala --enable-usbredir=yes --with-sasl=no --enable-gstaudio --disable-smartcard
$ make
  • 制作deb包
$ sudo apt-get install checkinstall
$ cd spice-gtk-0.18
$ sudo checkinstall make install
  • 安装spice-gtk
$ sudo dpkg -i spice-gtk-*.deb
### 安装依赖库
$ sudo apt-get install -y libegl1-mesa libusb1 gtk-doc-tools libepoxy0 atk-bridge girepository libpng libxkbcommon vala gstreamer-plugins-base pango wayland gstreamer libjpeg-turbo
$ sudo ldconfig

方法二

  • 编译环境

    操作系统: 64位 Ubuntu 14.04 LTS (trusty)

  • 安装gettext
$ sudo apt-get install -y build-essential
$ wget http://ftp.gnu.org/gnu/gettext/gettext-0.19.8.tar.gz
$ tar xzf gettext-0.19.8.tar.gz
$ cd gettext-0.19.8/
$ ./configure
$ make
$ sudo make install
  • 安装jhbuild
$ sudo apt-get install -y git autoconf automake yelp-tools
$ git clone https://github.com/silvermagic/jhbuild.git
$ cd jhbuild/
$ git checkout custom
$ ./autogen.sh
$ make
$ sudo make install
$ echo 'PATH="$HOME/.local/bin:$PATH"' >> ~/.profile
$ source ~/.profile
$ cp examples/custom/mini-spice-gtk.jhbuildrc ~/.config/jhbuildrc
  • 编译spice-gtk
$ sudo apt-get install apt-file
$ apt-file update
$ sudo apt-get install xorg-dev
$ jhbuild sysdeps --install
$ jhbuild build
  • 打包spice-gtk
$ cd ~/gnome
$ tar zcf spice-gtk.tar.gz usr/
  • 安装spice-gtk
$ sudo tar zxf spice-gtk.tar.gz -C /
### 安装依赖库
$ sudo apt-get install -y libegl1-mesa libusb1 gtk-doc-tools libepoxy0 atk-bridge girepository libpng libxkbcommon vala gstreamer-plugins-base pango wayland gstreamer libjpeg-turbo
$ sudo ldconfig

Ubuntu ARM环境

  • 编译环境

    操作系统: 64位 Ubuntu 14.04 LTS (trusty)

  • 搭建模拟环境

    参考Ubuntu ARM系统开发环境搭建文档完成模拟环境搭建,然后切换到模拟环境

  • 安装gettext
$ sudo apt-get install -y build-essential
$ wget http://ftp.gnu.org/gnu/gettext/gettext-0.19.8.tar.gz
$ tar xzf gettext-0.19.8.tar.gz
$ cd gettext-0.19.8/
$ ./configure
$ make
$ sudo make install
  • 安装jhbuild
$ sudo apt-get install -y git autoconf automake yelp-tools
### Ubuntu ARM模拟环境git无法使用,先退出模拟环境,然后执行git,再切回模拟环境并重新更新其所有者
$ cd ~/arm-trusty-root/home/ubuntu/
$ git clone https://github.com/silvermagic/jhbuild.git
$ cd ~/
$ sudo ./chroot.sh
$ su ubuntu
$ cd ~/
$ sudo chown ubuntu:ubuntu -R ~/jhbuild/
### 回到模拟环境并配置jhbuild环境
$ cd jhbuild/
$ git checkout custom
$ ./autogen.sh
$ make
$ sudo make install
$ echo 'PATH="$HOME/.local/bin:$PATH"' >> ~/.profile
$ source ~/.profile
$ cp examples/custom/mini-spice-gtk.jhbuildrc ~/.config/jhbuildrc
  • 编译spice-gtk
$ sudo apt-get install apt-file
$ apt-file update
$ sudo apt-get install xorg-dev
$ jhbuild sysdeps --install
$ jhbuild build
  • 打包spice-gtk
$ cd ~/gnome
$ tar zcf spice-gtk.tar.gz usr/
  • 安装spice-gtk
$ sudo tar zxf spice-gtk.tar.gz -C /

Windows环境

  • 参考资料
    官方文档

  • 编译环境

    操作系统: 64位 Fedora23

  • 下载源文件

    如果要编译32位和64位版本,建议新建x64和x86两个目录clone两份源码libusbspice-gtk、spice-protocol、virt-viewer、usbredir

  • 安装依赖
### noarch:表示软件运行在32位/64位平台
### x86_64:表示软件运行在64位平台
### i686:表示软件运行在32位平台
$ sudo yum -y install dh-autoreconf.noarch
$ sudo yum -y install gtk-doc.noarch
$ sudo yum -y install icoutils.x86_64
$ sudo yum -y install perl-Text-CSV.noarch
$ sudo yum -y install vala-tools.x86_64
$ sudo yum -y install msitools.x86_64
### spice-common编译报错recipe for target 'generated_client_demarshallers.c' failed
$ sudo pip install pyparsing
### 64位virt-viewer编译依赖包
$ sudo yum -y install mingw64-filesystem.noarch
$ sudo yum -y install mingw64-gcc.x86_64
$ sudo yum -y install mingw64-libxml2.noarch
$ sudo yum -y install mingw64-glib2.noarch
$ sudo yum -y install mingw64-pixman.noarch
$ sudo yum -y install mingw64-openssl.noarch
$ sudo yum -y install mingw64-gtk3.noarch
$ sudo yum -y install mingw64-gstreamer*
$ sudo yum -y install mingw64-celt051.noarch
$ sudo yum -y install mingw64-gdb.noarch
### 32位virt-viewer编译依赖包
$ sudo yum -y install mingw32-filesystem.noarch
$ sudo yum -y install mingw32-gcc.x86_64
$ sudo yum -y install mingw32-libxml2.noarch
$ sudo yum -y install mingw32-glib2.noarch
$ sudo yum -y install mingw32-pixman.noarch
$ sudo yum -y install mingw32-openssl.noarch
$ sudo yum -y install mingw32-gtk3.noarch
$ sudo yum -y install mingw32-gstreamer*
$ sudo yum -y install mingw32-celt051.noarch
$ sudo yum -y install mingw32-gdb.noarch
$ sudo yum -y install mingw32-nsis.i686
### 标准手法,可在make前一次性将所缺依赖安装好
$ dnf builddep mingw-virt-viewer.spec

编译

  • 执行autogen.shautoreconf完成后失败不要紧,因为脚本使用的是configure而不是mingw32-configure
  • 有些情况mingw32-configure失败找不到库文件,需要执行export PKG_CONFIG_PATH=/usr/i686-w64-mingw32/sys-root/mingw/share/pkgconfig/

  • 编译libusb
### 64位
$ ./autogen.sh
$ mingw64-configure --enable-usbdk --enable-debug-log
$ sudo make install
### 32位
$ ./autogen.sh
$ mingw32-configure --enable-usbdk --enable-debug-log
$ make
$ sudo make install
  • 编译usbredir
### 64位
$ ./autogen.sh
$ mingw64-configure
$ make
$ sudo make install
### 32位
$ ./autogen.sh
$ mingw32-configure
$ make
$ sudo make install
  • 编译spice-protocol
### 64位
$ ./autogen.sh
$ mingw64-configure --enable-maintainer-mode
$ make
$ sudo make install
### 32位
$ ./autogen.sh
$ mingw32-configure --enable-maintainer-mode
$ make
$ sudo make install
  • 编译spice-gtk
### 64位
### 3.29-4.8的某处修改会导致32位spicy崩溃
$ git reset --hard 02c4cd59a45844b938a8c5b647538d01d4f040a0
$ ./autogen.sh
$ mingw64-configure --enable-maintainer-mode --with-gtk=3.0 --enable-vala --enable-usbredir=yes --with-sasl=no --enable-gstaudio
$ make
$ sudo make install
### 32位
### 3.29-4.8的某处修改会导致32位spicy崩溃
$ git reset --hard 02c4cd59a45844b938a8c5b647538d01d4f040a0
$ ./autogen.sh
$ mingw32-configure --enable-maintainer-mode --with-gtk=3.0 --enable-vala --enable-usbredir=yes --with-sasl=no --enable-gstaudio
$ make
$ sudo make install
  • 编译virt-viewer
### 64位,修改spice-gtk3.wxi和virt-viewer.nsis.in,将libspice-client-gtk-3.0-4.dll改成libspice-client-gtk-3.0-5.dll
$ ./autogen.sh
$ mingw64-configure --with-gtk=3.0 --with-spice-gtk
$ make
$ sudo make install
$ cd data/
$ make msi
### 32位,修改spice-gtk3.wxi和virt-viewer.nsis.in,将libspice-client-gtk-3.0-4.dll改成5
$ ./autogen.sh
$ mingw32-configure --with-gtk=3.0 --with-spice-gtk
$ make
$ sudo make install
$ cd data/
$ make msi

测试环境准备

VMWare Workstation
操作系统类型配置
CentOS 7虚拟机2GB 2CPU 40GB
Windows 7虚拟机1GB 1CPU 40GB
服务端配置
  • 安装virt-manager
  • 创建一台xp虚拟机
  • 修改xp虚拟机配置文件中的spice监听地址<graphics type='spice' port='5900' autoport='yes' listen='0.0.0.0'>
  • 删除xp虚拟机默认的usb重定向
  • 防火墙允许libvirt通过,如果客户端连接出现被拒绝,可执行iptables -F
客户端配置
使用virt-viewer连接

在开始菜单找到Remote viewer,输入连接地址spice://192.168.30.139:5900其中192.168.30.139为服务端ip,端口号5900可在服务端用命令ps -ef|grep -i 'spice port'查询

转载于:https://www.cnblogs.com/silvermagic/p/7666229.html

### 回答1: Spice-gtk 是一个开源的用于远程访问和显示虚拟化环境的客户端库,它允许用户通过网络连接到远程虚拟机,并在本地进行交互操作和图形渲染。下面是对其源码的简要分析。 首先,spice-gtk 的源码采用 C 语言编写,为构建虚拟化环境提供了一个简洁而高效的框架。它使用了许多不同的库和工具,如 GTK+,Glib 和 Cairo,用于实现图形用户界面以及输入和输出设备的处理。 源码中的主要组件包括 SPICE Client,用于建立与远程虚拟机的通信连接,并处理输入和输出数据流。它封装了 SPICE 协议,以实现远程图形渲染和输入事件传递。另一个重要的组件是 SPICE Display,用于渲染和显示远程虚拟机的图像内容。 在源码中,还可以找到一些辅助模块,如音频处理模块、USB 设备管理模块等。这些模块负责管理与虚拟机相关的附加功能,并提供了相应的接口。 在分析源码时,我们可以看到源码中使用了许多设计模式和技术,如单例模式、事件驱动模型和异步处理。这些设计模式和技术的使用使得源码具有扩展性和可维护性,为开发人员提供了自定义和扩展的便利。 总之,spice-gtk 的源码分析涉及到底层通信协议的实现、图形渲染和输入输出处理等方面。通过深入研究和分析,可以更好地理解 spic-gtk 的工作原理,并为其开发和维护提供指导和支持。 ### 回答2: spice-gtk是一个开源的包含SPICE客户端的GTK+工具包,用于与SPICE协议兼容的远程计算机进行交互和图形渲染。它的源代码可以帮助我们了解SPICE协议的实现细节以及与远程计算机通信的方式。 spice-gtk的源码是使用C语言编写的,主要由几个模块和文件组成。其中最重要的模块是spice-client,它实现了SPICE协议的客户端功能。此外,还有其他辅助模块,如spice-widget和spice-common,它们提供了用于创建GUI界面和共享资源的工具。 在源码中,我们可以找到与SPICE协议相关的数据结构和函数。这些数据结构用于存储协议消息的信息,例如输入事件、帧缓冲和图像数据等。函数则用于处理这些消息,完成数据的编解码、传输和渲染等操作。 通过分析源码,我们可以深入了解SPICE协议的各个阶段和步骤。例如,源码中可能包含与连接建立和认证相关的代码,用于验证客户端与远程计算机之间的身份和权限。同时,我们还可以找到与图形渲染和输入事件处理相关的代码,用于将远程计算机的图像和用户的输入交互传递。此外,源码中可能还包含了与音频、剪贴板共享和本地文件传输等功能相关的代码。 总之,通过对spice-gtk源码的分析,我们可以了解SPICE协议的实现原理以及与远程计算机通信的细节。这有助于我们深入理解SPICE技术,并能够根据需求进行自定义修改和扩展。同时,也可以从中学习到一些关于C语言编程和GTK+工具包的技巧和经验。 ### 回答3: spice-gtk是一款用于远程桌面应用程序的开源工具包。它提供了一组用于在本地计算机上创建与远程服务器连接的库和工具。 对于spice-gtk源代码的分析,我们可以从以下几个方面着手: 1. 连接管理:spice-gtk提供了连接管理的功能,用于建立与远程服务器的连接。可以分析其网络编程相关的代码,包括套接字通信、连接建立和认证等过程。 2. 图形渲染:spice-gtk可以将远程服务器的图像数据渲染到本地计算机上。源代码中可能包含与图像编解码、颜色管理和图像渲染相关的实现细节。 3. 输入设备:spice-gtk允许用户在本地计算机上控制远程服务器。源代码中可能包含处理本地输入设备(例如鼠标和键盘)事件的代码,以及将这些事件传递到远程服务器的实现部分。 4. 窗口管理:spice-gtk还提供了窗口管理的功能,用于在本地计算机上显示远程服务器的应用程序窗口。源代码可能包含与窗口管理相关的实现,例如窗口布局、窗口管理器通信等。 5. 性能优化:在源代码中可能会涉及性能优化的实现细节,例如数据压缩算法、带宽管理、缓存策略等。分析这些部分可以了解spice-gtk如何提高远程桌面应用程序的性能和响应速度。 总体而言,对于spice-gtk源代码的分析需要关注网络通信、图形渲染、输入设备、窗口管理和性能优化等方面的实现细节。深入理解这些细节有助于我们更好地使用和定制spice-gtk,并为远程桌面应用程序的开发和优化提供指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值