在 Windows 和 Linux 中运行 C++ 程序

Posted

技术标签:

【中文标题】在 Windows 和 Linux 中运行 C++ 程序【英文标题】:Running a C++ program in Windows vs Linux 【发布时间】:2015-05-29 14:47:24 【问题描述】:

我的老师告诉我,我的作业(一个简单的程序,我选择用 C++ 编写代码)必须可以在 Linux 中运行。他是这么说的:

"...您还应该包含一个 README 文件,该文件包含应该运行的所有命令行 剪切和粘贴。如果你使用 C,那么

 $ gcc –o 2010-11649-hairpin 2010-11649-hairpin.c
 $ 2010-11649-hairpin –input filename –l 200 –m 4 –h 20

"

其中-l 200-m 4等是程序的参数。

我一直在 Windows 中编写代码,而且我很少有从命令行运行程序的经验,所以我不确定我需要做什么来确保我的程序可以在 Linux 中运行。有人可以帮我弄清楚我需要做什么吗?我已经编写了程序,我只需要确保当 TA 尝试在 Linux 中运行它时一切正常。

【问题讨论】:

如果你只是使用标准的c++,就不用担心兼容性了。 好吧,如果您想确保 TA 与您有相同的结果,那么您需要在与您的 TA 类似的环境中测试编译。您没有 Linux 计算机的访问权限吗? 如果你的老师告诉你需要在 linux 中编译你的程序,但没有给你至少介绍使用 linux 的课程,那么就有问题了,你有礼貌的权利向他请教如何做到这一点 在你的 Windows 机器上安装 VirtualBox 并在上面安装 Linux,然后你就可以设置了。 【参考方案1】:

首先,您必须通过在 Linux 上执行指令来尝试此操作。

如果您使用标准 C/C++ 编写程序,它将在 Linux 上编译并运行。一旦你接触到不太基本的部分,你很有可能已经使用过特定于操作系统的标头,但它可能不会那么容易工作。

在 Linux 下编译 C++ 程序时,通常要使用 g++ gcc 中的 C++ 编译器。根据您的程序,在您的示例中将gcc 替换为g++ 可能有效(尽管您的文件名可能不同)。 所以你最终可能会得到类似的东西:

g++ –o myprogram myprogram.cpp
./myprogram –l 200 –m 4

以上内容仅适用于所有源代码都在一个目录中的基本程序。

【讨论】:

我还有一些需要编译的辅助函数。如果myProgram 依赖于辅助函数,比如Helper(),写了一个单独的.cpp 文件,那么通过终端获取myProgram 的过程是什么? 您可以在第一个源文件之后添加其他源文件。所以你可以做g++ –o myprogram myprogram.cpp helper.cpp。第二个命令./myprogram 将从终端运行程序。【参考方案2】:

查看您的程序是否在 gcc 中编译的一种快速方法是使用在线编译器,例如 ideone。将代码粘贴到那里并选择 C++ 4.9.whateverversion (gcc),然后编译并运行。

另一种方法是在虚拟机中安装 linux 操作系统,这是最简单、最方便的方式。您可以使用免费的oracle virtualbox 或VMWare。

在vm中设置linux是easy

这里还有其他答案向您展示如何在 linux 中从命令行编译程序。

【讨论】:

【参考方案3】:

如果您的 C++ 程序也只使用一个文件(例如 hairpin.cpp),您可以使用几乎完全相同的命令,除了将 gcc 替换为 g++hairpin.cby hairpin.cpp

但是,如果您有足够的时间和系统资源,我建议您尝试在虚拟机中编译和运行所有内容。 VirtualBox 是一个很好的免费虚拟化软件,Linux Mint 在我看来是一个非常适合初学者的发行版。

在 VM 上自行测试一切可能是确保一切按预期工作的最佳解决方案。

【讨论】:

对不起,我在这里保持更正:正如@Thirler 在另一个答案中发布的那样,它也适用于更多源文件,但都在一个目录中。

以上是关于在 Windows 和 Linux 中运行 C++ 程序的主要内容,如果未能解决你的问题,请参考以下文章

C++ 程序在 Linux 上完美运行,但不能在 Windows 上运行

Linux 与 Windows,C++ 运行时性能差异超过读取 CSV 文件

linux-windows跨c++应用

windows和linux的差异:c++中的反斜杠和正斜杠

编译 C++ 代码以在 Windows 和 Linux 中表现相同 [关闭]

在 Windows 上运行并生成 Linux 代码的 C++ 编译器