2014年12月8日 星期一

SPICE-gtk 0.28 編譯

SPICE 官網

OS: Fedora 20
compiler: MinGW
source: spice-gtk-0.26.tar.bz2
              spice-gtk-0.28.tar.bz2

0. 前言

    這篇的的目的是為了在 linux 下編譯給 windows 用的 SPICE-GTK dll.

1. 建置環境

    安裝完 Fedora 完後, 除了安裝 MinGW 外, 會再安裝一些協助工具
    1. 安裝 MinGW:
          sudo yum install mingw*
    2. 右鍵終端機
         sudo yum install nautilus-open-terminal
    3. FTP傳輸
         sudo yum install filezilla
    4. 啟動桌面
         sudo yum install gnome-tweak-tool
         安裝完後重啟電腦, 輸入 gnome-tweak-tool 在桌面項目中開啟"由文件管理器处理桌面"
         被 windows 洗腦了, 東西一定要放桌面, 不然不會心安
    5. 文件編輯器 gvim
         看看就好, 不怎麼好用

    安裝完 Ubuntu 完後, 安裝 MinGW:sudo apt-get install mingw*

2.建置 spice-gtk ( http://www.spice-space.org/download.html )

    ( *註 2014/11/18測試 MinGw 安裝時含有舊版 spice-gtk-0.22 )
    1. Fedora必要元件安裝
sudo yum install gtk2-devel gtk3-devel spice-protocol intltool openssl-devel gobject-introspection-devel libjpeg-turbo-devel zlib-devel cyrus-sasl-devel gtk-doc pygtk2-devel python libcacard gstreamer-devel gstreamer-plugins-base-devel libtool automake vala perl-Text-CSV
     Ubuntu必要元件安裝?
 sudo apt-get install intltool

    2. 設定編譯環境
         mingw32-configure [參數]

32bit: mingw32-configure --without-sasl --with-audio=gstreamer --with-coroutine=winfiber --disable-smartcard --without-python --enable-usbredir=yes --disable-gtk-doc --disable-werror --enable-static --enable-shared --with-gtk=2.0

64bit: mingw64-configure --without-sasl --with-audio=gstreamer --with-coroutine=winfiber --disable-smartcard --without-python --enable-usbredir=yes --disable-gtk-doc --disable-werror --enable-static --enable-shared --with-gtk=2.0

 詳細參數官網有, 以下列出一些簡單的

#####################################################################
Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-silent-rules   less verbose build output (undo: "make V=1")
  --disable-silent-rules  verbose build output (undo: "make V=0")
  --enable-dependency-tracking
                          do not reject slow dependency extractors
  --disable-dependency-tracking
                          speeds up one-time build
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-static[=PKGS]  build static libraries [default=yes]
  --enable-fast-install[=PKGS]
                          optimize for fast installation [default=yes]
  --disable-libtool-lock  avoid locking (might break parallel builds)
  --enable-maintainer-mode
                          enable make rules and dependencies not useful (and
                          sometimes confusing) to the casual installer
  --disable-nls           do not use Native Language Support
  --enable-gtk-doc        use gtk-doc to build documentation [[default=no]]
  --enable-gtk-doc-html   build documentation in html format [[default=yes]]
  --enable-gtk-doc-pdf    build documentation in pdf format [[default=no]]
  --enable-smartcard=[auto/yes/no]
                          Enable smartcard support [default=auto]
  --enable-usbredir=[auto/yes/no]
                          Enable usbredir support [default=auto]
  --enable-polkit=[auto/yes/no]
                          Enable PolicyKit support (for the usb acl
                          helper)[default=auto]
  --enable-pie=[auto/yes/no]
                          Enable position-independent-executable support (for
                          the usb acl helper)[default=auto]
  --enable-introspection=[no/auto/yes]
                          Enable introspection for this build
  --enable-controller     Enable controller build [default=yes]
  --enable-vala           Check for vala requirements [default=no]
  --enable-dbus=[auto/yes/no]
                          Enable dbus support for desktop integration
                          (disabling automount) [default=auto]
  --enable-werror         Use -Werror (if supported)

##################################################################### 
ptional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                          both]
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
  --with-sysroot=DIR Search for dependent libraries within DIR
                        (or the compiler's sysroot if not specified).
  --with-html-dir=PATH    path to installed docs
  --with-sasl=[yes/no/auto]
                          use cyrus SASL for authentication [default=auto]
  --with-gtk=[2.0/3.0]    which gtk+ version to compile against [default=3.0]
  --with-x11              Use x11/shm display backend instead of cairo
                          [default=no]
  --with-pnp-ids-path     Specify the path to pnp.ids [default=(internal)]
  --with-audio=[gstreamer/pulse/auto/no]
                          Select audio backend [default=auto]
  --with-usb-acl-helper-dir=DIR
                          Directory where the USB ACL helper binary should be
                          installed
  --with-usb-ids-path     Specify the path to usb.ids [default=auto]
  --with-coroutine=[ucontext/gthread/winfiber/auto]
                          use ucontext or GThread for coroutines
                          [default=auto]
  --with-python           build python bindings [default=auto]


#####################################################################
        編譯
        32bit: mingw32-make

        64bit: mingw64-make
* 0.28 64bit 在 /usr/x86_64-w64-mingw32/sys-root/mingw/lib 產出有問題  
1. libspice-client-gtk-3.0.la 中的
dependency_libs= ' /usr/i686-w64-mingw32/ ...修正為 dependency_libs= ' /usr/x86_64-w64-mingw32/ ...  
libdir='/usr/i686-w64-mingw32/ ... 修正為 libdir='/usr/x86_64-w64-mingw32/

2.  libspice-client-glib-2.0.la , libspice-controller.la
libdir='/usr/i686-w64-mingw32/ ... 修正為 libdir='/usr/x86_64-w64-mingw32/
 
        安裝
       
32bit: sudo mingw32-make install
        64bit: sudo mingw64-make install 

產出在 /usr/i686-w64-mingw32/sys-root/mingw/bin 下
libspice-client-glib-2.0-8.dll
libspice-client-gtk-2.0-4.dll  or  libspice-client-gtk-3.0-4.dll 根據設定參數.
libspice-controller-0.dll
spicy.exe
spicy-screenshot.exe
spicy-stats.exe

產出在 /usr/i686-w64-mingw32/sys-root/mingw/lib 下
libspice-client-glib-2.0.la
libspice-client-glib-2.0.a
libspice-client-glib-2.0.dll.a
libspice-controller.la
libspice-controller.dll.a
libspice-controller .a
libspice-client-gtk-2.0.a
libspice-client-gtk-2.0.la
libspice-client-gtk-2.0.dll.a 


沒有留言:

張貼留言