交叉编译的查询,从Windows到Linux,从Linux到Windows,

时间:2012-11-02 06:32:28

标签: c++ c linux windows cross-compiling

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

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

    但是..

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

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

2 个答案:

答案 0 :(得分:2)

交叉编译时,交叉编译的代码必须使用目标平台上可用的API(即最终运行的API)。当交叉编译器的输出在Linux机器上运行时,它不会神奇地提供对Win32 API的访问;它与编译 on 目标机器上的代码相同,但意味着您不需要实际执行此操作。换句话说,你可以通过在ARM Linux机器上运行本机(非交叉)编译器来实现相同的功能,但是你需要一个足够强大的ARM盒来运行编译器。

也就是说,原则上,您可以在使用winelib提供win32 API的同时交叉编译到Linux。不知道它在ARM上的效果如何 - 它只是真的意味着在x86上使用。

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

答案 1 :(得分:1)

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