【问题标题】:Cross Platform C?跨平台 C?
【发布时间】:2011-04-14 05:41:51
【问题描述】:

我正在运行 Linux Ubuntu 10.04,我有一台 Windows 7 机器和一台运行 Mac OS X 10.6.4 的 MacBook。如何编写一个简单的 C 程序(如 NOT QT!),例如:

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("Hello Linux and Mac and Windows!")
    return 0;
}

无需在 Ubuntu、Windows 7 和 Mac OS X 上编译该程序即可在我所有的机器上运行?我可以在 Ubuntu 中创建它并交叉编译它以在多个不同的操作系统上运行吗?
更新
我并不是要生成一个二进制文件来运行所有文件。我的意思是在同一个操作系统中从同一个 C 代码生成三个二进制文件。

【问题讨论】:

  • 我不这么认为。我已经拥有一台运行 OS X 的 Mac。
  • 您需要在printf() 语句中包含换行符以获得可靠的输出。
  • 答案的主要部分在于选择如何编写程序。了解每个平台的标准和 API。弄清楚如何调整源代码以使用通用 API。找出没有本机通用功能的情况,然后决定如何解决这个问题。我的大多数程序在 Unix、Linux、MacOS X 和 Cygwin 上都可以顺利编译,没有太多麻烦——除非他们正在做一些在其中一个平台上不可用的事情。
  • 具体来说,“我可以在 Ubuntu 中创建它并交叉编译它以在多个不同的操作系统上运行吗?”您在哪里复制“如何在 Linux 或 Windows 中为 OS X 编译?”重复的问题不是坏事。

标签: c cross-platform cross-compiling


【解决方案1】:

可执行文件具有特定的格式(例如 ELF)和架构(例如 x86)。因此,您必须多次编译。但是,可以交叉编译到例如来自 Ubuntu 的 Windows 7 x86 和 Mac OS X x86。正如您所期望的那样,每个程序的程序都不同。

对于 Windows,您需要 mingw32。见 Compile Windows C console applications in Linux

对于 OS X,请参阅 How to compile Intel Mac binaries on Linux? ,它链接到 a tutorial

您可以搜索以找到每个的更多信息。

【讨论】:

  • 对于 OS X 教程,它似乎有点老了。它是否也适用于 iPhone SDK?
  • @Mohit,我不知道,你问的是 MacBook。对于 Linux->iPhone,请参阅 [ 在 Linux 中开始 iPhone 应用程序开发? ](stackoverflow.com/questions/276907/…);不过,这当然不简单。
【解决方案2】:

不幸的是,Linux、Windows 和 OSX 使用的可执行文件格式在细节上大相径庭。没有办法生成适用于所有三个的单个二进制文件。

可以使用来自 Linux 的交叉编译器生成 Windows 和 OSX 可执行文件(反之亦然),但设置构建环境可能比它的价值更麻烦。如果您真的想尝试,请参阅http://www.kegel.com/crosstool/

【讨论】:

  • 检查更新,我不是说要创建一个单一的二进制文件在多个平台上运行。
【解决方案3】:

跨平台 C Hello World!桌面窗口应用程序。 Windows / macOS / Linux。 (不是 C++,不是 QT)

https://nappgui.com/en/start/hello.html

【讨论】:

  • 这是一个封闭源代码库,可能会禁止使用。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2019-06-16
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多