【发布时间】:2016-02-14 10:41:24
【问题描述】:
TL;DR 程序在一个系统上运行。在家庭系统上,它在到达主入口点之前挂起(用调试器检查)。
我有一个用于小组项目的本地代码存储库,已同步到我在其他几台机器(包括 Linux、Windows 和 Mac)上测试过的最新版本,我确信这些版本可以正常工作而不会出现任何令人讨厌的错误。这是一个相当简单的程序,我们处理的主要技术挑战是在 SDL2 中进行链接,这相当容易。
该程序在我的本地计算机上完美编译,即使打开了尽可能多的警告标志,也不会引发任何警告或错误。我确保我不会意外使用来自不同系统的 .o 文件,并且我已经清理然后重新编译了几次代码。我已将我的本地存储库恢复为项目中的旧代码,我也确信这些代码之前已编译并在我的本地计算机上运行。
我已确保 gcc 中外部库的链接工作正常,并且没有由此产生的警告或错误。 .o 文件的最终链接也没有错误和警告。
我已经为我正在工作的程序重新安装了所有相关的 .DLL(在这种情况下,唯一的 DLL 是 SDL),包括在逻辑系统位置和已编译可执行文件的工作目录中。我确保 .DLL 是正确的位版本,甚至尝试了错误的位版本,以防我不小心制作了需要其他位版本的版本。
我已经重新安装了我的编译器(我目前是从 Msys2 获得的),并尝试使用来自 Mingw64 的编译器。
这些都没有任何区别。当我去运行可执行文件时,什么都不会发生。没有创建任何进程,并且我从中运行它的任何终端窗口都会挂起,直到我强制关闭它(它不会响应 ctrl-c)。
如果我尝试在调试模式下运行它,gdb 将能够打开可执行文件,并为我提供所有信息,但是一旦我尝试运行它,它就会像终端窗口一样挂起。即使我尝试在入口点中断它,程序似乎也永远无法到达入口点,因为它仍然挂起。
这个问题完全是随机开始的。我从大学回家,那天我上大学之前一直在编写代码,并将它留在可编译状态,回到家,点击 make 并且它无法运行。这甚至是在我取消我们当天提交并推送的更改之前,这就是为什么我完全不知道为什么它会如此愉快地编译但绝对拒绝在任何条件下运行。
【问题讨论】:
-
欢迎来到 Stack Overflow!请edit您的问题包括minimal reproducible example。这将通过澄清问题来帮助 Stack Overflow 社区。span>
-
可能是您的环境,而不是您的特定代码。如果你构建一个简单的“Hello, World!”程序,它适合你吗?