我正在开发一个使用ffmpeg
库的C项目。
目前我正在开发 windows 平台,我将为 Linux ARM 交叉编译项目。
在这样的背景下,我几乎没有基本问题。
如果我使用 ANSI C ++ ,我可以肯定,我将能够使用相应的编译器交叉编译项目[ MSVC, MingW ]
但是..
如果我在项目中使用“Win32”和其他“Windows”特定API,交叉编译器将如何处理它,以使项目能够在Linux上运行。
答案 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上运行。