2

我想做一个简单的类似数据库的软件。它将像 MySQL/PostgreSQL 一样工作,但它会非常非常简单和不同。它应该可以在 Windows 和 Linux 上运行(就像 MySQL/PostgreSQL 一样)。我想在 C++ 中做到这一点。

是否有一个编译器可以用来编写一个代码,然后将该代码编译到两个平台?当然,这可能是两个不同的编译器,每个编译器都针对一个平台进行编译。

要回答以下问题之一 - 是的,我很清楚我不能为两个平台提供一个二进制文件。我想使用一个代码并获得两个不同的二进制文件,结果可能使用了 2 个不同的编译器。

4

4 回答 4

3

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

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

于 2013-07-19T09:43:51.730 回答
2

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

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

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

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

于 2013-07-19T09:44:24.760 回答
1

看看cmake使用一个编译器进行交叉编译。对于框架,有 boost 和 QT,具体取决于您的需要。但是要在两个系统上运行您的软件,您不必一定要使用 boost 或 QT 或 cmake,它只是在很多情况下更容易,但严格的 c++ 操作系统独立代码也可以完成这项工作。对于特定于操作系统的部分,您仍然可以使用预处理器指令。编译也可以在不同的编译器中完成(linux 上的 GCC,windows 上的 MSVC)。

于 2013-07-19T09:43:36.193 回答
1

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

于 2013-07-19T09:47:01.353 回答