我正在开发一个使用 ffmpeg
库的 C 项目。
目前我正在windows平台上工作,我将为Linux ARM交叉编译该项目。
有了这样的背景,我有几个基本问题。
如果我使用ANSI C++,我可以确定,我将能够使用相应的编译器交叉编译项目
[ MSVC, MingW ]
但是..
如果我在项目中使用“Win32”和其他“Windows”特定 API,交叉编译器将如何处理它,以使项目能够在 Linux 上运行。
<- 同样,如果我在项目中使用 Linux 特定的“功能”,交叉编译器将如何处理它,以使项目能够在 Windows 上运行。
最佳答案
当您进行交叉编译时,正在交叉编译的代码必须使用目标平台(即最终将运行的平台)上可用的 API。当交叉编译器的输出在 Linux 机器上运行时,它不会神奇地提供对 Win32 API 的访问;它与在目标计算机上编译代码相同,但意味着您不需要实际这样做。换句话说,您可以通过在 ARM Linux 机器上运行 native (非交叉)编译器来实现相同的目标,但您需要一个足够强大的 ARM 机器来运行编译器。
也就是说,原则上,您可以在使用winelib时交叉编译到Linux。提供win32 API。但不确定它在 ARM 上的工作效果如何 - 它实际上只适用于 x86。
最后,请注意,即使在最好的情况下,交叉编译也往往相当复杂。从 x86 Linux 交叉编译到 ARM Linux,而不是从 x86 Windows 交叉编译到 ARM Linux,可能会让您的生活变得更简单 - 虽然可以进行跨操作系统和跨平台构建,但更改的变量越少,事情就越简单。
关于c++ - 关于交叉编译的查询,从Windows到Linux以及从Linux到Windows,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13190444/