交叉編譯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'查詢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM