c++ - g++ 只为 linux 编译跨平台

标签 c++ linux g++ cross-platform

我有兴趣设置一个远程服务器来运行一些密集的计算。由于各种原因,我可能想运行与我的开发箱不同的 Linux 发行版。假设硬件是正确的目标,并且我将自己限制在 ISO C 库中,那么在与代码是 g++ 编译的 linux 发行版不同的 linux 发行版上运行可执行文件是否会出现任何问题?

在我的具体情况下,我的开发箱是最新的基于 Ubuntu 的。是否有任何 Linux 发行版会挂起基于 Ubuntu 的 g++ 编译代码?选择远程服务器发行版时,我应该寻找什么来确保无故障运行?

最佳答案

我在笔记本电脑和台式机上运行我为工作开发的大量计算密集型代码。在我最近不得不更换我的笔记本电脑之前,它是一台速度比我的台式机慢得多的机器,内存也少得多,所以它与你描述的情况类似。

如果您的代码需要大量计算,您可能希望针对运行它的任何机器对其进行优化,无论是您的开发箱还是远程服务器。我认为最简单的做法是为您的代码设置一个 makefile,这样您就可以将 makefile 和源代码复制到远程服务器,然后只要开发箱和服务器的 gcc 版本和任何如果您的代码需要其他库依赖项,您只需发出 make 命令即可在远程服务器上构建代码。如果您需要有关 makefile 的快速教程,this当我第一次开始使用它们时,其中一个对我很有帮助。

这样做的好处是,您可以在一台计算机上使用较小的数据集、较低分辨率的网格或任何您需要做的事情来开发和测试代码,以降低计算强度。然后,一旦您知道它的工作原理,就将其转移到功能更强大的机器上,以实际运行强度更高的版本。通过调用 make 命令,g++ 可以使用诸如 -march=native-mtune=native 之类的标志来确保代码针对远程服务器的 CPU 进行了优化,并且因为它是在那台机器上编译的,所以您不必担心在一台计算机上构建的可执行文件是否可以在另一台计算机上运行。

关于c++ - g++ 只为 linux 编译跨平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38769748/

相关文章:

c++ - 关于在 C++ 中将数组存储在 std::vector 中的问题

c++ - 显示二进制加法后的最后一位

linux - 我愚蠢地运行了 "chmod 400 chmod",现在它似乎永远坏掉了

c++ - MSVC - C++ - 发布构建失败 - 链接器错误

linux - 如何仅在命令完成时输出

linux - 将标准输出通过多行管道传输到单个文件

c++ - C 到 C++ 表内联定义

c++ - 如何防止 C++ 名称反修饰函数包含在二进制文件中

c++ - 如何确保我的 `ifstream` 文件对象指向的文件内容已更新?

c++ - 使用资源中的对话