g++ 只为 linux 编译跨平台
Posted
技术标签:
【中文标题】g++ 只为 linux 编译跨平台【英文标题】:g++ compiling for linux only cross-platform 【发布时间】:2016-08-04 14:09:45 【问题描述】:我有兴趣设置一个远程服务器来运行一些密集的计算。由于各种原因,我可能想运行与我的开发盒不同的 linux 发行版。假设硬件是正确的目标,并且我将自己限制在 ISO C 库中,可以预期在与 g++ 编译的代码不同的 Linux 发行版上运行可执行文件会出现任何问题吗?
在我的具体情况下,我的开发箱是最新的基于 Ubuntu 的。是否有任何 Linux 发行版会挂起基于 Ubuntu 的 g++ 编译的代码?在选择远程服务器发行版时,我应该寻找什么来确保无故障运行?
【问题讨论】:
两个盒子有相同的 CPU 吗? 服务器很可能是开发盒的更快/RAM-ier 版本。或者至少,开发盒是家族内或上一代 CPU。 【参考方案1】:我在笔记本电脑和台式机上运行了大量为工作而开发的计算密集型代码。直到我最近不得不更换我的笔记本电脑,它的内存比我的台式机要慢得多,所以情况与您描述的情况相似。
如果您的代码计算量很大,您可能会希望它针对运行它的任何机器进行优化,无论是您的开发盒还是远程服务器。我认为最简单的做法是为您的代码设置一个makefile,这样您就可以将makefile和源代码复制到远程服务器,然后只要开发箱和服务器都使用相同版本的gcc和任何您的代码需要的其他库依赖项,您只需发出 make 命令即可在远程服务器上构建代码。如果您需要有关 makefile 的快速教程,this 在我刚开始使用它们时对我很有帮助。
这样做的好处是,您可以在一台计算机上使用较小的数据集、较低分辨率的网格或您需要做的任何事情来降低计算强度来开发和测试代码。然后,一旦您知道它的工作原理,将其转移到更强大的机器上以实际运行更强大的版本。通过调用 make 命令,g++ 可以使用 -march=native
或 -mtune=native
等标志来确保代码针对远程服务器的 CPU 进行了优化,并且由于它是在该机器上编译的,因此您不必担心在一台计算机上构建的可执行文件是否可以在另一台计算机上运行。
【讨论】:
感谢您的时间和关注。我了解您在推荐中引用的确切逻辑和问题,但这完全不是我正在寻找的解决方案。我只是想知道在与开发盒不同的 Linux 平台上执行代码时要寻找哪些问题,因为硬件大多相同,但由于未指定的原因,Linux 发行版可能必须不同。以上是关于g++ 只为 linux 编译跨平台的主要内容,如果未能解决你的问题,请参考以下文章