zoukankan      html  css  js  c++  java
  • MingW编译virt-viewer

    在http://www.spice-space.org/download.html可以下载到windows版本的virt viewer

    virt-viewer-x86-0.5.7.msivirt-viewer-x64-0.5.7.msi是使用MingW编译出来的,源码就是使用virt-viewer-0.5.7.tar.gz

    如果需要定制virt viewer,就需要从源码编译出可执行的二进制码,本文就是描述编译windows版virt viewer的过程。

    MinGW

    在使用MinGw编译virt viewer之前,我们先简单介绍一下MinGW。鉴于MinGw过于庞大,我们也只能点到为止。

    MinGW是Minimalist GUN for Windows的缩写。MinGW提供了一套开发环境,用来开发Microsoft windows本地应用。

    MinGW提供了一套完全开源的编程工具集,不需要依赖于第三方的C运行DLL,就可以开发Windows本地应用。当然MinGW还是依赖于microsoft提供的几个操作系统DLL,比如MSVCRT.DLL。

    MinGW 编译器提供了对Microsoft C Runtime的以及一些语言特定runtimes的访问。MinGW的Minimalist,就体现在这里,MinGW没有尝试提供一个POSIX runtime 环境。

    1. <span style="font-size:10px;">Microsoft C Runtime  
    2. C Runtime是windows平台的一个概念,一般来说CRT函数(C Runtime函数)就是标准的C语言函数。比如printf, scanf, strlen, fopen等函数就是属于CRT函数。  
    3. 但是在windows下所有的CRT函数最终都转化为win32 API来执行的。windows内核本身,并没有提供对CRT的支持。  
    4. </span>  

    由于MinGW是基于GNU的,自然可以在linux提供了一套交叉编译环境。有了MinGW,我们可以在linux下开发,编译,运行windows应用程序。

    上面提到的virt-viewer-x86-0.5.7.msivirt-viewer-x64-0.5.7.msi 就是MinGW编译环境的产物

    在安装完他们后,可以去安装目录看看,在我的机器上目录结构如下。

    对于linux开发者来说,这个目录层次是不是似曾相识。

    没错!安装目录中包含了执行文件,配置脚本,以及各种GNU的库(当然了,这些是windows下DLL,而不在是linux下的.so)

    由于virt viewer使用了大量的GNU库,所以要想重新编译virt viewer,必须借助于MinGW。

    准备开发环境

    MinGW开发环境

    在windows上搭建MinGW开发环境,可参考http://www.mingw.org/wiki/InstallationHOWTOforMinGW, windows下MinGW开发环境是官方支持的

    这里我们只描述linux下MinGW开发环境的搭建。注意,由于linux MinGW交叉编译环境是distributors提供的,这些交叉工具链并不是MinGW.org直接提供的。

    Linux发行版Fedora上提供了MinGW开发包,因此我们选择Fedora 19做为软件环境。

    Fedora的MinGW有相当多的软件包,我们这里选择全部安装,总计700MB,好在今天网速快。

    1. # su  
    2. # yum install mingw*  
    3. # yum install intltool  
    4. # yum install icoutils.i686   

    编译virt viewer

    1. 下载virt-viewer源码

    https://fedorahosted.org/released/virt-viewer/ 有很多virt_viewer的版本,这里我们使用virt-viewer-0.5.6.tar.gz

    2. 解压

    1. # tar zxvf virt-viewer-0.5.76.tar.gz  
    2. # cd virt-viewer-0.5.6  

    3. 首先执行MinGW的configure工具

    1. # mingw32-configure --with-gtk=2.0 --with-spice-gtk  

    由于上面准备MinGW 环境时,我们已经安装了绝大多数的库,所以一般来说这里不会失败,如果失败,按照提示使用yum安装即可。

    在我的机器上显示如下

    1. configure: Configuration summary  
    2. configure: =====================  
    3. configure:   
    4. configure:  Features:  
    5. configure:   
    6. configure:       Gtk: 2.0  
    7. configure:   
    8. configure:  Libraries:  
    9. configure:   
    10. configure:        GLIB2: -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include   -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lgthread-2.0 -lgmodule-2.0 -lglib-2.0 -lintl    
    11. configure:   
    12. configure:          GTK: -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/gtk-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/gtk-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/atk-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/cairo -I/usr/i686-w64-mingw32/sys-root/mingw/include/gdk-pixbuf-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/pango-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/freetype2 -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng15 -I/usr/i686-w64-mingw32/sys-root/mingw/include/harfbuzz   -Wl,-luuid -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -latk-1.0 -lpangocairo-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangoft2-1.0 -lpangowin32-1.0 -lgdi32 -lfreetype -lfontconfig -lpango-1.0 -lm -lcairo -lgobject-2.0 -lglib-2.0 -lintl    
    13. configure:   
    14. configure:      GTK_VNC: -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/gtk-vnc-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/gvnc-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/gtk-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/lib/gtk-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/atk-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/cairo -I/usr/i686-w64-mingw32/sys-root/mingw/include/gdk-pixbuf-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/pango-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/freetype2 -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng15 -I/usr/i686-w64-mingw32/sys-root/mingw/include/harfbuzz   -Wl,-luuid -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lgtk-vnc-1.0 -lgvnc-1.0 -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -latk-1.0 -lpangocairo-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangoft2-1.0 -lpangowin32-1.0 -lgdi32 -lfreetype -lfontconfig -lpango-1.0 -lm -lcairo -lgobject-2.0 -lglib-2.0 -lintl    
    15. configure:   
    16. configure:    SPICE_GTK: -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/spice-client-gtk-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/gtk-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/spice-client-glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/gtk-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/atk-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/cairo -I/usr/i686-w64-mingw32/sys-root/mingw/include/gdk-pixbuf-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/pango-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/freetype2 -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng15 -I/usr/i686-w64-mingw32/sys-root/mingw/include/harfbuzz -I/usr/i686-w64-mingw32/sys-root/mingw/include/spice-1   -Wl,-luuid -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lspice-client-gtk-2.0 -lgtk-win32-2.0 -lspice-client-glib-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -latk-1.0 -lpangocairo-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangoft2-1.0 -lpangowin32-1.0 -lgdi32 -lfreetype -lfontconfig -lpango-1.0 -lm -lcairo -lgobject-2.0 -lglib-2.0 -lintl    
    17. configure:   
    18. configure:      LIBXML2: -I/usr/i686-w64-mingw32/sys-root/mingw/include/libxml2   -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lxml2    
    19. configure:   
    20. configure:      LIBVIRT: -I/usr/i686-w64-mingw32/sys-root/mingw/include   -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lvirt -lportablexdr -lintl    
    21. configure:   
    22. configure:        OVIRT:    
    23. configure:   

    编译

    1. mingw32-make  

    编译过程也可能出现依赖的工具错误,下载需要的工具包即可解决

    安装

    1. mingw32-make install  

    执行安装命令后,会把编译生成的文件拷贝到/usr/i686-w64-mingw32/sys-root/mingw下,文件的执行依赖于这个目录下的bin, etc, conf, lib 和share,我们需要把这几个目录的内容都拷贝到windows下。

    这些目录下是MinGW windows应用程序基本运行环境,大部分并不是virt-viewer必须的,后面我们会把virt-viewer运行必须的文件列表列出来。

    执行

    1. cd mingw  
    2. cd bin  
    3. remote-viewer.exe  

    即可看到GTK样式的remote viewer了

  • 相关阅读:
    http-proxy-middleware与express.json()的bug
    20+前端常用的vscode插件(总结推荐)
    图解翻转单向链表,超详细(python语言实现)
    pytest + allure2.x 踩坑-报告无数据
    Pycharm+pytest+allure打造高逼格的测试报告
    Appium Appium Python API 中文版
    appium模拟键盘事件
    AppiumDesktop控制手机和安卓模拟器
    Appium环境搭建超详细教程
    Fiddler抓包工具总结
  • 原文地址:https://www.cnblogs.com/ruiy/p/5128732.html
Copyright © 2011-2022 走看看