【问题标题】:Linux randomly deleted my file while compiling what do I do?Linux在编译时随机删除了我的文件我该怎么办?
【发布时间】:2018-05-05 13:25:57
【问题描述】:
gcc -L/root/Desktop - Wall -o prog3.c -pthread -lcopy
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.0: In function '_start': (.text+0x20): undefined reference to 'main' 
collect2: error: ld returned 1 exit status

这是我的错误代码。 prog3.c 无处可寻,到底发生了什么,有什么办法可以找回我的文件吗?粗体是我运行的命令,其余的是结果控制台输出

【问题讨论】:

  • -o prog3.c 表示编译的输出要放入prog3.c。但是当编译失败时,它会删除输出文件。
  • 为什么将源文件指定为输出文件?
  • 这就是备份的用途。

标签: linux compilation gnu recover


【解决方案1】:

在这种情况下您的选项的小附录:

  1. 它是 Git(或任何其他版本控制)存储库。在这种情况下,您可以简单地从以前的提交中获取它

  2. 您的编辑器/IDE 有一些备份系统。有时我需要带回我认为不必要的文件。对于这种情况,我最喜欢的文本编辑器应该已经在适当的位置创建了备份文件(例如 $XDG_DATA_HOME/vim/backup 在我的例子中)。

如果以上都不是,但您之前仍然正确编译了二进制文件

  1. 您可以尝试反编译,但这个过程 - 即使成功 - 也不是无损的(例如,代码基本上是意大利面条)。

  2. 如果您使用-g 标志编译,您可能会从调试信息中检索代码。

  3. 你至少可以反汇编成汇编代码。

【讨论】:

    【解决方案2】:

    您的问题在这里:-o prog3.cgcc-o option 用于告诉gcc 它应该为它生成的可执行文件赋予哪个名称。所以在这里,你基本上是在要求你的编译器用一个可执行文件替换你的 prog3.c 源文件。可惜你的代码不见了……

    【讨论】:

    • 呃,我不是故意的。这是今晚我的大学课程的一部分,我是初学者。我想我最好开始打字
    • 对不起您的工作。 Barmar 是对的,你应该备份你的代码!你的编辑可能能够处理这个问题。不要忘记 Git 或 SVN 等版本控制软件。这些允许你保存你的代码版本,如果你搞砸了,可以回到旧版本。
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多