什么C ++编译器同时针对Linux和Windows?

时间:2013-07-19 09:33:30

标签: c++ cross-platform

我想制作一个类似数据库的简单软件。它将像MySQL / PostgreSQL一样工作,但它将非常非常简单和不同。它应该适用于Windows和Linux(就像MySQL / PostgreSQL一样)。我想用C ++做到这一点。

我可以使用编译器将一个代码编译到两个平台吗?或者我是否必须为两个平台使用不同的代码?

4 个答案:

答案 0 :(得分:2)

你可以使用MinGW for Windows和Linux上的gcc在Windows上编译:MinGW是一个极简主义的gcc for windows实现。它是“相同的编译器”,但它不会生成相同的二进制文件,因为一个用于Windows,另一个用于linux。

编写可移植和标准代码更好,这样您就不必依赖任何特定的编译器。这样,它将在大多数平台和编译器下编译。 Boost,Qt,Ace是您可以使用的一些示例跨平台库。

答案 1 :(得分:2)

您不能从一个在Windows和Linux中都能运行的编译器[1]生成可执行文件 - 这是不可能实现的。

这不是编译器的问题,而是“编译器完成后会发生什么”的问题。

当然可以编写在Linux和Windows上编译和工作的代码,但是你必须构建两个不同的可执行文件(如果你想支持64位和32位版本的操作系统,可能会更多当然,如果你想在ARM或PowerPC等上运行,那还需要一个单独的构建。

[1]在其他人指出之前:可以构建一个可以产生两个二进制文件的编译器 - 是的,这在理论上是可行的。

答案 2 :(得分:1)

使用一个编译器查看cmake进行交叉编译。对于Frameworks,根据您的需要提供增强和QT。但是要在两个系统上运行你的软件,你不一定必须提升或QT或cmake,它只是在很多情况下使它更容易,但严格的c ++ os独立代码也可以完成这项工作。对于特定于OS的部件,您仍然可以使用预处理器指令。编译也可以在不同的编译器中完成(Linux中的GCC,Windows上的MSVC)。

答案 3 :(得分:1)

在我之前编写跨平台游戏时,我在Linux上维护了开发,但我经常切换到Windows(VS2010,VC ++)以查看是否存在问题。不要太信任标准代码,因为某些编译器(例如VC ++)不支持所有标准。