2

我正在开发一个使用ffmpeg库的 C 项目。目前我在windows平台上工作,我将为Linux ARM交叉编译项目。在这样的背景下,我几乎没有什么基本问题。

  1. 如果我使用ANSI C++,我可以肯定,我将能够使用相应的编译器交叉编译项目[ MSVC, MingW ]

    但 ..

  2. 如果我在项目中使用“Win32”和其他“Windows”特定 API,交叉编译器将如何处理它,以使项目能够在 Linux 上运行。

  3. 同样,如果我在我的项目中使用 Linux 特定的“功能”,交叉编译器将如何处理它,以使项目能够在 Windows 上运行。
4

2 回答 2

2

当您进行交叉编译时,被交叉编译的代码必须使用目标平台上可用的 API(即最终将在其上运行的平台)。当它的输出在 Linux 机器上运行时,交叉编译器不会神奇地访问 Win32 API。它与在目标机器上编译代码相同,但意味着您实际上不需要这样做。换句话说,您可以通过在 ARM Linux 机器上运行本机(非交叉)编译器来实现相同的目标,但您需要一个足够强大的 ARM 机器来运行编译器。

也就是说,原则上,您可以在使用winelib提供 win32 API 的同时交叉编译到 Linux。但不确定它在 ARM 上的效果如何——它只适用于 x86。

最后,请注意,即使在最好的情况下,交叉编译也往往相当复杂。从 x86 Linux 交叉编译到 ARM Linux 而不是 x86 Windows 到 ARM Linux 交叉编译可能会让您的生活更简单——虽然可以进行跨操作系统和跨平台构建,但您更改的变量越少,事情就越简单。

于 2012-11-02T06:40:50.167 回答
1

如果您使用 Winapi,您的项目将无法在 Linux 上运行。

于 2012-11-02T06:37:31.813 回答