如何使用 x86_64-w64-mingw32 交叉构建最新的稳定 Qemu

Gla*_*ost 7 package-management cross-compilation

安装MinGW和克隆的“最新的稳定”分支QEMU

sudo apt-get install -y mingw-w64
cd ~/
git clone -b stable-2.2 git://git.qemu.org/qemu.git
cd ~/qemu
Run Code Online (Sandbox Code Playgroud)

然后从@ http://wiki.qemu.org/Hosts/W32#Building_QEMU_for_W64我试过:

./configure --cross-prefix=amd64-mingw32msvc-
Run Code Online (Sandbox Code Playgroud)

现在我得到:

ERROR: "amd64-mingw32msvc-gcc" either does not exist or does not work
Run Code Online (Sandbox Code Playgroud)

更新:

~/Scripts/qemu$ ./configure --cross-prefix=x86_64-w64-mingw32-
ERROR: pkg-config binary 'x86_64-w64-mingw32-pkg-config' not found
Run Code Online (Sandbox Code Playgroud)

第二次更新:

修复了以前的问题

sudo link /usr/bin/pkg-config /usr/bin/x86_64-w64-mingw32-pkg-config
sudo apt-get --no-install-recommends -y build-dep qemu
Run Code Online (Sandbox Code Playgroud)

但现在我得到:

owner@K53TA:~/qemu$ ./configure --cross-prefix=x86_64-w64-mingw32-

ERROR: zlib check failed
       Make sure to have the zlib libs and headers installed.
Run Code Online (Sandbox Code Playgroud)

但已zlib1g-dev安装

eyo*_*100 1

警告:这个答案是一个正在进行的工作

尽管我要求 OP 考虑使用WinQemu,但我正在为那些选择“从头开始做”的人正式编写答案。假设您的构建主机是 64 位且 Windows 是 32 位:

  1. 我们需要删除OP安装失败的交叉编译工具,使用:
    sudo apt-get --purge remove mingw-w64
    rm -vR ~/qemu
  2. 现在我们必须决定我们的架构。 如果您的构建主机是 64 位,并且您的 Windows 是 32 位,请使用
    sudo apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime
  3. 如果您的构建主机是 64 位,并且您的 Windows 是 64 位,请使用
    sudo apt-get install gcc-mingw32 mingw32-binutils mingw-w64
  4. 可选:通过以下方式添加 SDL 支持:
    wget http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz
  5. 现在我们下载源压缩包并解压它。你也可以像OP一样使用Git Clone,但你只需要选择一个选项: sudo apt-get install wget && wget http://wiki.qemu-project.org/download/qemu-2.2.0.tar.bz2 && tar -xvjpf qemu-2.2.0.tar.bz2 && cd qemu-2.2.0
  6. 现在我们配置构建。如果您的构建主机是 64 位,并且您的 Windows 是 32 位,请使用configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]
  7. 如果您的构建主机是 64 位,并且您的 Windows 是 64 位,请使用configure --cross-prefix=amd64-mingw32msvc-

注意:如果配置阶段失败,您必须修复配置错误,正如OP提到的那样。此时,配置失败很可能是由于缺少库引起的