【问题标题】:How to cross compile a C SDL program for Windows on Linux?如何在 Linux 上交叉编译适用于 Windows 的 C SDL 程序?
【发布时间】:2017-07-30 21:16:32
【问题描述】:

我有一个可以使用 SDL 编译的完美运行的 C 程序

gcc main.c -o program `sdl-config --libs` -lSDL

程序很简单,它会弹出一个黑色窗口并等待用户关闭它。没有问题或错误。我已经安装了 MinGW,我正在尝试使用 x86_64-w64-mingw32-gcc 来交叉编译它;我想知道如何在 Linux 上为 Windows 交叉编译它并包含必要的库。

【问题讨论】:

    标签: c gcc mingw sdl cross-compiling


    【解决方案1】:

    您可以像您的 Linux 版本一样调用 MinGW 的 GCC,但您可能需要用一些手动配置替换sdl-config,如下所示:

    x86_64-w64-mingw32-gcc -Ipath/to/SDL/headers \
                           -Lpath/to/SDL/libs \
                           -o program main.o \
                           -lSDL -lSDLmain
    

    您需要下载 SDL.libSDLmain.lib。我相信它们是开发 zip 的一部分。 (编辑:如 cmets 中所述,您可能不需要使用库,但可以只使用 DLL。)

    这可能会在运行时弹出一个控制台窗口。传入 -mwindows 标志以改为针对 Windows 子系统。

    【讨论】:

    • Aren'y .libs 用于 msvc 而 mingw 使用 .dll.a(或 .a)?此外,我认为 mingw 现在可以直接与 dll 链接而无需导入库,至少对于 C 而言。但由于 SDLmain 仅是静态的,所以没那么重要。库的顺序也应该颠倒(这里不确定,它是使用 SDL2,很长一段时间没有使用 1.2)。
    • 老实说,我不确定,也无法对其进行测试。我会更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多