zoukankan      html  css  js  c++  java
  • 交叉编译Spice-gtk

    Fedora环境

    • 编译环境

    操作系统: 64位 Fedora23

    • 下载源文件

    spice-gtkspice-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-gtkspice-protocolvirt-viewerusbredir

    • 安装依赖
    ### 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'查询

  • 相关阅读:
    裴蜀定理
    欧几里得算法
    最大公约数
    质数和合数
    整除
    CSP斗地主
    skkyk:点分治
    题解:P2130 狂奔的Wzf
    题解:最大子树和
    博客大换主题祭
  • 原文地址:https://www.cnblogs.com/silvermagic/p/7666229.html
Copyright © 2011-2022 走看看