c++ - 关于交叉编译的查询,从Windows到Linux以及从Linux到Windows,

标签 c++ c linux windows cross-compiling

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

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

    但是..

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

    <
  3. 同样,如果我在项目中使用 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/

相关文章:

c++ - 如何在 Microsoft Visual C++ 2010 Express 项目中创建本地数据库?

c++ - C++ 11 中的数组

c++ - MSVC C++ 调用 GFortran 子例程

c - 使用 shmget 和 shmat 时页面获取(删除)

c++ - BB10 级联命令行开发

arrays - 在数组中查找与数组具有相同均值的对

c - fork子进程中的静态变量

c - 无法理解命令行参数指针

linux - linux是如何保护内存的?

Linux - 通用网络配置