Linux在编译时随机删除了我的文件,我该怎么办?

Linux在编译时随机删除了我的文件,我该怎么办?,linux,compilation,gnu,recover,Linux,Compilation,Gnu,Recover,这是我的错误代码prog3.c找不到了,到底发生了什么事,有没有办法找回我的文件??粗体是我运行的命令,其余是结果控制台输出您的问题在这里:-o prog3.cgcc用于告诉gcc它应该给它生成的可执行文件命名。在这里,您基本上要求编译器用可执行文件替换prog3.c源文件。遗憾的是,您的代码不见了……在这种情况下,您的选项有一个小附录: 它是Git(或任何其他版本控制)存储库。在这种情况下,您只需从上一次提交中获取它 您的编辑器/IDE有一些备份系统。有时我需要带回一份我认为不必要的文件。对

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

您的问题在这里:
-o prog3.c
gcc
用于告诉
gcc
它应该给它生成的可执行文件命名。在这里,您基本上要求编译器用可执行文件替换
prog3.c
源文件。遗憾的是,您的代码不见了……

在这种情况下,您的选项有一个小附录:

  • 它是Git(或任何其他版本控制)存储库。在这种情况下,您只需从上一次提交中获取它

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

  • 如果以上都没有,但您以前仍然正确编译了二进制文件

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

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

  • 您至少可以反汇编为汇编代码


  • -o prog3.c
    意味着编译的输出应该放在
    prog3.c
    中。但是当编译失败时,它会删除输出文件。为什么要将源文件指定为输出文件?这就是备份的目的。呃,我不是有意这么做的。这是我大学今晚课程的一部分,我是一个初学者。我想我最好开始打字了对不起你的工作。Barmar是对的,你应该备份你的代码!你的编辑可能能够处理这个问题。别忘了Git或SVN等版本控制软件。这些允许您保存代码的版本,并在出错时返回到旧版本。
    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