在 Linux 服务器上编译代码似乎以不同的方式运行 [关闭]

Posted

技术标签:

【中文标题】在 Linux 服务器上编译代码似乎以不同的方式运行 [关闭]【英文标题】:Compiling Code on Linux Server Seems to Run Differently [closed] 【发布时间】:2016-11-25 05:15:09 【问题描述】:

我想不出一个好方法来命名这个问题,因为这个问题的描述很长。基本上,我遇到的问题是,我在 Mac 上用 Xcode 编写的代码在我上传到学校的 linux 服务器后运行不一样。我以前从来没有遇到过这个问题。它不是语法问题,这是我可能遇到的问题(IE 也许我不需要在 Xcode 上包含某个需要包含在 linux 服务器上运行的头文件,所以当我尝试编译时出现错误那里),但它是一个逻辑错误。一个特定的 if-else 语句的评估完全错误。它在 Xcode 中正常工作,但是将相同的 .cc 文件上传到 linux 服务器并使用 makefile 编译,它具有完全不同的结果,使用与 Xcode 中使用的完全相同的输入。我什至在上传后用 emacs 打开 .cc 文件,以确保没有任何代码从拙劣的上传中被更改,但根本没有任何改变。这很奇怪。我以前从未遇到过此类问题。我想提供代码,但它可能太长了,所以我需要把它分解成一个更小的例子。现在,我想知道这是否是其他人曾经遇到过的事情。该作业涉及图论。我正在输入“A”和“B”来绘制两个顶点之间的边。您可以在 Xcode 构建中看到它可以工作,但在 Linux 构建中则不行。

【问题讨论】:

是的,其他人编写的代码编译成功,但在不同系统上的行为不同。当程序或编译器不严格符合标准时,就会发生这种情况。通常,问题出在程序上。这就是我告诉你不要发布整个程序的部分,而是将其缩减为minimal reproducible example,然后发布。 (顺便说一句,'vertices' 的单数是 'vertex') 谢谢。事实上,我从以前的数学课上就知道这一点,我想我的大脑现在完全被搅乱了,试图弄清楚这一点。 @JohnBollinger。我发现很难将代码缩小到相当小的范围内。我可以把它剪掉很多,但要让它继续运作,它仍然需要相当多的代码。 【参考方案1】:

我发现了错误。在 Xcode 中,出于某种原因,我将一个字符输入到一个像 'cin >> string[0]' 这样的字符串中,它工作得很好,但这在 linux 服务器上编译时导致了这个问题。它不接受数组样式输入,我不得不使用'cin >> string'

【讨论】:

以上是关于在 Linux 服务器上编译代码似乎以不同的方式运行 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在Ubuntu 16.04上编译OpenJDK8的源代码

在不同版本的 XCode 上编译和运行相同的代码以针对不同的 iOS 版本

VRPN C++ 代码可在 Linux 上编译,但不能在 Windows 上编译

C++ 在 Mac OS X 上编译代码并在 Linux x86 上运行

为啥我不能在 iPhone 上编译引用 vImage 库的代码?

在 Windows 上编译+分发 Linux 代码