【问题标题】:Manual for cross-compiling a C++ application from Linux to Windows?从 Linux 到 Windows 交叉编译 C++ 应用程序的手册?
【发布时间】:2010-09-15 23:51:29
【问题描述】:

是否有将 C++ 应用程序从 Linux 交叉编译到 Windows 的手册?

就是这样。我想要一些信息(链接、参考、示例...)来指导我这样做。

我什至不知道这是否可能。

我的目标是在 Linux 中编译一个程序,得到一个可以在 Windows 下运行的 .exe 文件。

【问题讨论】:

    标签: c++ windows linux cross-compiling


    【解决方案1】:

    基础并不难:

    sudo apt-get install mingw32    
    cat > main.c <<EOF
    int main()
    {
      printf("Hello, World!");
    }
    EOF
    i586-mingw32msvc-cc main.c -o hello.exe
    

    apt-get 替换为yum,或者您的Linux 发行版使用的任何内容。这将为 Windows 生成一个hello.exe

    一旦你明白这一点,你可以使用autotools,并设置CC=i586-mingw32msvc-cc

    CC=i586-mingw32msvc-cc ./configure && make
    

    或者使用CMake and a toolchain file 来管理构建。更困难的仍然是添加本机交叉库。通常它们存储在/usr/cross/i586-mingw32msvc/{include,lib} 中,您需要在构建过程的配置步骤中单独添加这些路径。

    【讨论】:

    • 有一点需要注意的是有些库不喜欢交叉编译。如果您唯一的选择是 .exe 安装程序和源,您可能希望在 wine 下安装库,然后将库和标头复制到您的 mingw 搜索路径中。我永远无法让 Boost 进行交叉编译
    • 你能指导我如何用 Wine 测试这样的编译程序吗?
    • wine hello.exe 应该这样做!
    • WINE 适用于像这样愚蠢的简单程序,但虚拟机(VirtualBox、VMWare、QEMU 等)是您最好的选择。
    • 如果要生成 64 位 Windows 二进制文件,请安装 64 位工具:$ sudo apt-get install mingw-w64。编译器是x86_64-w64-mingw32-gcc
    【解决方案2】:

    这取决于你的意思(我真的不能说)。

    1. 如果您的意思是要在 Windows 上使用现有的 Linux 应用程序,那么您可以尝试在 Windows 上使用 Cygwin 编译它。然而,这并没有为您提供一个没有对 Cygwin 的所有依赖项的 Windows 可执行文件(您的可执行文件仍然依赖于 cygwin.dll 文件) - 它仍然可能需要一些移植才能工作。见http://www.cygwin.com

    2. 如果您的意思是您希望能够在 Linux 上执行 Windows 应用程序的实际编译并生成在 Windows 上可执行的 .exe 文件 - 从而使用您的 Linux 机器进行开发和/或编译然后你应该查看MinGW for Linux,它是一个用于在 Linux 上为 Windows 进行交叉编译的工具。见http://www.mingw.org/wiki/LinuxCrossMinGW

    最好的问候!

    【讨论】:

      【解决方案3】:

      我建议您尝试以下方法,GUB(Grand Unified Builder),因为它交叉编译了几个包及其依赖项,并将它们组装成一个适用于当前 11 种架构的安装包。您可以从here 下载预构建的iso 以安装在VM 中,并关注源here。目前可用于交叉编译 GNU LilyPond/GNU Denemo/Inkscape 和 OpenOffice.org。

      目标架构是:

      • darwin-ppc - Darwin 7 (MacOS 10.3)/PowerPC 的 tar.bz2 文件
      • darwin-x86 - Darwin 8 (MacOS 10.4)/x86 的 tar.bz2 文件
      • mingw - Windows32 的 mingw 可执行文件
      • linux-x86 - Linux/x86 的 shar 存档
      • linux-64 - Linux/x86_64 的 shar 存档
      • linux-ppc - Linux/PowerPC 的 shar 存档
      • freebsd-x86 - FreeBSD 4/x86 的 shar 存档
      • freebsd-64 - FreeBSD 6/x86_64 的 shar 存档
      • cygwin - 用于 Cygwin/Windows32 的 .tar.bz2 包
      • arm - Linux/ARM 的 shar 存档(大部分未经测试)
      • debian - Debian 的 shar 存档(大部分未经测试)

      【讨论】:

        猜你喜欢
        • 2021-12-30
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 1970-01-01
        • 2023-01-27
        • 1970-01-01
        相关资源
        最近更新 更多