【问题标题】:Compile Windows C console applications in Linux在 Linux 中编译 Windows C 控制台应用程序
【发布时间】:2009-11-25 20:09:40
【问题描述】:

我可以在 Linux 中编译 Windows C 控制台应用程序 (.exe) 吗? (更具体地说,Ubuntu)

我很久以前就听说过交叉编译器,但当时我对它们并不感兴趣。

最好的问候

【问题讨论】:

    标签: c windows ubuntu


    【解决方案1】:

    this post 提供了一些信息,还有这个duplicate question

    当您使用 Ubuntu 时,您需要的软件包是(我认为)mingw32

    apt-get install mingw32
    

    然后用i586-mingw32msvc-gcc编译,例如

    i586-mingw32msvc-gcc helloworld.c -o helloworld.exe
    

    【讨论】:

    • 迄今为止最好的答案,是的,有一个骗局:D 也很高兴发布所需的包。直接回答,一拳。
    • 感谢您的回答。也很抱歉重复的问题,我没有发现它。 :-) 保持良好的工作!再次感谢。
    • 在 Fedora 上,我们还有学习使用 mingw 编译 win32 的资源、一个 irc 通道、mingw32 实用程序和一堆用于 Windows 的预构建库——有关更多信息,请参阅:@ 987654323@.
    【解决方案2】:

    如果它是标准 C 并且不使用 Windows 库,则可以。

    C 代码本身非常可移植,标准 C 库 (libc) 几乎随处可用。如果您的代码执行 printf() 和 sscanf() 和 fopen() 等等,那么它只会在另一个平台上编译和运行。 Windows、Linux、BSD 等。

    是 libc 以外的库其他引入了可移植性挑战。

    任何与特定于 Windows 的平台库链接的东西都是麻烦的。 kernel32.lib、user32.lib等。

    还有第三方库,如果用 C 编写,应该可以在 Linux 和 Windows 上使用。 PCRE 就是一个很好的例子——它是一个用 C 语言编写的正则表达式库,它可以在 Windows 和 Linux 上使用。这个集合中实际上有数百个库。

    如果您将自己限制在可移植库中的 libc 和库调用,那么您将拥有一个可移植的 C 应用程序。

    【讨论】:

    • 我之前在 linux 上为 windows 编译过 GUI 应用程序,我使用 GTK gui 工具包。
    【解决方案3】:

    如果您谈论的是严格的 ANSI C 应用程序,那么在 Linux 平台上使用 gcc 编译应该没有任何问题。

    如果您喜欢 Windows 系统库,那么您将不得不用它们的 *nix 系统等效项(如果有的话)替换这些调用。

    【讨论】:

      【解决方案4】:

      如果您希望将 Linux 中的程序编译为 Windows 可执行文件,则可以选择交叉编译器。 http://www.airs.com/ian/configure/configure_5.html 帮了我一点忙。

      【讨论】:

        【解决方案5】:

        你的意思是你能在 Linux 上构建一个 windows .exe(即在 linux 上开发并将应用程序交付给 Windows 用户吗?)

        或者您的意思是获取一个 Windows 应用程序并将其重新编译(移植)到 Linux 以便在 Linux 上构建和运行?

        【讨论】:

          【解决方案6】:

          您可以使用WINE 并安装VS,例如。其他解决方案使用MonoDevelop
          你也可以使用像Code::Blocks这样的交叉编译器

          【讨论】:

            【解决方案7】:

            可以进行交叉编译。 AFAIK 你得到了一个 windows 可执行文件,它当然会在 windows(可能还有 WINE)下运行。

            有两种可能的选择:mingw 和 cygwin。

            一个教程here。 MingW交叉编译页面为here

            【讨论】:

              【解决方案8】:

              您也可以在 linux 的终端中使用标准 gcc,您可以使用相同的程序,只需将 std.h 更改为 unistd.h(这意味着您需要更改为 linux 特定的库)。 我在学校有一门关于 linux 编程的课程,除了它是关于 ubuntu 和输入/输出的库更改以及一些与 linux 相关的线程,都是一样的

              example : gcc -c myprogram.c // 编译 gcc -o myprogram.o 名称来制作 lib myprogram // 如果有参数,则带参数

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-11-10
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多