编译概述
当使用某种操作系统(windows、linux或Mac os X)时,我们不仅可以编译可在该系统运行的程序,也可以编译运行去其他平台的程序(如在linux系统上编译运行于windows、iOS、Android等系统的程序),后者就是所谓的交叉编译(cross-compile)技术。
一般来说,编译一个程序首先需要提供如下三类资源1). 编译器
2). 目标程序依赖的库或头文件
3). 目标程序源码
目前最广泛使用的编译器就算gcc了,gcc是一个支持多种目标系统的跨平台编译器家族,包含一组编译器。可编译windows程序的gcc被称为MingW。
在ubuntu上交叉编译windows版qemu
1.安装编译器
ubuntu官方仓库虽然提供了mingw32等软件包但是却没有提供重要的软件包如mingw32-zlib,根据参考文献[2],编译qemu还需要诸如mingw版的zlib、glib2等,而ubuntu官方仓库里没有提供相应软件包,不过幸运的是在ppa上找到了第三方提供的mingw相关软件包,见参考文献[3]。命令如下。
sudo add-apt-repository ppa:brcha/mingw
sudo apt-get update
sudo apt-get install dh-mingw-w64 gcc-mingw-w64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 mingw32-pkg