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 环境。

[html] view plaincopy

  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,好在今天网速快。

[cpp] view plaincopy

  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. 解压

[html] view plaincopy

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

3. 首先执行MinGW的configure工具

[html] view plaincopy

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

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

在我的机器上显示如下

[html] view plaincopy

  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:

编译

[html] view plaincopy

  1. mingw32-make

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

安装

[html] view plaincopy

  1. mingw32-make install

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

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

执行

[html] view plaincopy

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

即可看到GTK样式的remote viewer了

时间: 2024-10-17 12:09:39

MingW编译virt-viewer的相关文章

virt viewer Usbredir USB重定向

编译virt viewer之前执行的configure命令,是没有使能usb-redir相关的功能,virt viewer是否支持usbredir是完全依赖于spice-gtk的. virt viewer对spice-gtk的依赖关系,可以从virt viewer的configure结果看出来: [html] view plaincopy configure: Configuration summary configure: ===================== configure: co

在Windows环境下使用MinGW编译Qt 4.8.6

1.修改环境变量工具推荐:Rapid Environment Editor.官网:http://www.rapidee.com/ 修改前请先备份当前的环境变量.然后: (1)检查系统变量path,删除有关mingw其他版本等信息,以免与后续的mingw32-make冲突. (2)检查用户变量INCLUDE.LIB.PATH.MSDevDir和MSVCDir,删除有关\Microsoft Visual Studio\VC98的信息,因为它们会与后续的mingw32-make冲突,导致编译出错. 2

MinGW编译wxWidget

MinGW编译wxWidget MinGW编译wxWidget WXWIN:源代码根目录 解压源码 进入到%WXWIN%\build\msw 清理项目 mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release clean 编译 动态库,发行版 mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release 动态库,调试版 mingw32-make -f makefile.

win7中用MinGW编译x264出现&quot;No working C compiler found.&quot;错误

Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + - + Ak. Input The input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 109) and m (m < 104). Then

mp4v2使用mingw编译配置

备注:黄色部分为原始语句,红色部分为修改后的语句 '-'表示去掉,'+'表示增加 1.修改configure文件 1)去掉enable_shared=no *-*-mingw*) # do not support shared - enable_shared=no 2)搜索X_libmp4v2_la_LDFLAGS,在如下位置增加mingw的相应设置 *-*-cygwin*) X_libmp4v2_la_LDFLAGS='-no-undefined' ;; + *-*-mingw*) + X_l

Windows下MinGW编译Qt4

还真不是吹,这个问题折磨我一天……前些天转载了一篇关于<Eclipse+Qt开发环境设置>和<Eclipse+MinGW+Qt开发环境设置>两片文章,里面讲述了QT的开源版本qt-win-opensource-4.x.x-mingw.exe 在Windows下的安装步骤,但我的是qt-win-commercial-src-4.x.x.zip,一顿百度.谷歌……结果还都是关于Qt开源版本的介绍,如何在MinGW开发环境编译成了今天的话题. 安装MinGW或者DEV-CPP,设置环境变

利用openssl管理证书及SSL编程第3部分:将MinGW编译的openssl dll导出def和lib供MSVC使用

将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.dll 然后用下面的脚本生成Windows MSVC需要的模块定义文件(.def, .lib和.exp), 然后就可以在VC中使用了. 前提系统要安装VS. 系统要求: Windows7+VS Studio (2008 and later)+MSYS 1) 根据32位dll生成模块定义文件的pytho

手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言开发的,不可避免的,libav源码使用了一些gcc的特性,那么在Windows下很难使用VC编译,但是使用MinGW编译却简单多了,下面我将根据自己的经历逐步介绍使用MinGW编译libav的过程以及在此过程中遇到的问题及其解决方法. 1      安装MinGW编译环境 1.1    安装MinG

VS2008编译器编译出来的文件比mingw编译的要几乎小一半

为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然后我们要到QT主页下载,QT4.7.4版的源码包 qt-everywhere-opensource-src-4.7.4.zip,因为用源码包编译没那么容易出错:另外还有QT for VS 的插件 qt-vs-addin-1.1.9.exe,这两个准备好就可以开始安装了. 第一步: 把源码 包qt-e