我编写了一个 C++ 源代码,并使用以下命令行以相同的名称对其进行了编译。
例如:
c++ source-code.cpp -o source-code.cpp
现在我的源代码已经被可执行程序所取代了。有什么方法可以检索我的源代码吗? 我是 Linux 新手,所以我不确定是否有任何方法可以撤消我所做的事情。
答案1
可能不行,尝试一下源代码控制?
您可能很幸运地打开了一个编辑器或一个带有回滚功能的终端窗口。
在马跑了才锁门的部门中,即使在开发玩具程序时,一个良好的开发实践是使用源代码控制。
$ hg init
$ hg add source.cpp
$ hg commit -m 'change' source.cpp
$ # edit here, and you can optionally revert to the original
$ hg commit -m 'change' source.cpp
$ # now if you clobber it you can go back to one of the previous revisions
答案2
该选项-o
指定了输出文件,这就是源代码被覆盖的原因。
你应该使用
c++ source-code.cpp -o executable-name
至于检索原来的编译文件中的源代码:不可以。您可以反汇编它(因此请获取程序的汇编版本),我相信有一些小程序可以从中重写一些“C++ 风格”的代码,但这永远不会像您的原始代码,因为 C++ 中的多条指令可能对应于相同的机器代码。
答案3
你用的是哪个编辑器。如果你用的是 Vim 之类的,很可能有 source-code.cpp~ 备份文件。
答案4
尝试一些磁盘恢复工具,也许新文件没有写入与原始文件相同的块上。我只是在这里大声思考,但你最好试一试。顺便问一下,你使用的是哪个编辑器?你检查过你的编辑器是否自动备份了每个文件吗?