我正在做一个学校项目。不幸的是,我只是运行了这样的编译:gcc -o file.c file.o
我忘了输出输出的可执行文件名,现在我以前的C文件已经不见了。有没有办法让这个文件回来?我写了很多代码已经消失了。
程序是在C语言的Unix服务器上编写的。
谢谢!
答案 0 :(得分:4)
有没有办法让这个文件恢复?
如果您使用版本控制系统或进行备份。如果没有,你可能会失去运气。
答案 1 :(得分:1)
如果您的编辑器保存了临时文件,它们可能仍然在那里。在unix下,文件本身就消失了。很快就会出现这个问题,因为它超出了StackOverflow的范围。
我认为(正如Caleb在我输入的时候观察到的那样)你学会了使用源代码控制和定期检查的众多好理由之一。
以下是将错误代码编译到错误文件中时会发生的情况:
~ mgregory$ cat > foo.h
bad code
~ mgregory$ cat > foo.c
test text
~ mgregory$ gcc -o foo.c foo.h
foo.h:1:1: error: unknown type name 'bad'
bad code
^
foo.h:1:9: error: expected ';' after top level declarator
bad code
^
;
2 errors generated.
~ mgregory$ ls -l foo.c
ls: foo.c: No such file or directory
~ mgregory$
答案 2 :(得分:1)
通常无法取回文件(但详细信息操作系统非常痛苦并且file system具体;如果在Linux笔记本电脑上的Ext4文件系统上,您可以尝试e2fsprogs debugfs
})。你显然有备份,所以使用它们(如果你不这样做,你会痛苦地学到一些重要的东西,我们大多数人在生命的早期阶段都犯了同样的错误,所以不要太羞耻)。
现在是时候了解version control系统是什么了。请阅读git并学会使用它。
如果您的软件使用free software许可,您甚至可以使用http://github.com/(或其他类似http://gitlab.com/)作为存储库。
您可以运行file file.c
和ls -l file.c
以及stat file.c
来了解file.c
内的内容。您可以使用ls -alst
顺便说一下,你应该用
编译你的程序gcc -Wall -Wextra -g file.c -o prog
这会向-Wall
请求所有警告,其中更多警告使用-Wextra
,使用-g
调试信息。然后,您可以将gdb
调试程序用作gdb prog
顺便说一句,您可能希望Makefile
为GNU make,只需键入make
即可编译您的程序。 Here是Makefile
的一个简单示例。
请注意,最近的 GCC能够处理pre-compiled headers(但它不是一个对小型学校项目非常有用的功能)。如果您输入gcc -o file.c file.h
,则您的标题文件file.h
可能已预编译为file.c