1

我找到了一些旧的大学工作,我的最后一个 Ada95 项目就在上面。遗憾的是,光盘已损坏,我只恢复了 3 个文件(无法恢复源和可执行文件):

project.adb、project.ali 和 project.o

这3个文件足以编译一个新的exe吗?我现在正在下载 gnat 编译器,但不得不承认,我几乎忘记了与 ada 相关的所有内容......

坦率

[编辑] shucks.... 使用 GCC 编译 project.adb 会引发有关丢失广告文件的错误,我无法恢复。

是否可以提取/编译“.o”或“.ali”文件?或者,我吃饱了吗?

4

2 回答 2

3

project.adb一个源文件。

既然你说 gcc 抱怨缺少 .ads 文件,这表明 project.adb 包含一个包体。您可以通过将以下内容放入 package.ads 来手动构建相应的包规范:

package Project is
end Project;

现在这几乎肯定是不够的,因为项目规范中可能包含一些类型和常量声明,因此您必须分析您的包体并确定它引用的内容。推断这些声明应该是什么样子并添加它们。哦,如果你的包体“带有”任何不属于标准 Ada 库的包,你也必须恢复这些包。

如果您确实设法让您的逆向工程规范和主体进行编译,您仍然必须创建一个“带有”项目包的“驱动程序”程序,并调用执行功能的任何函数和/或程序您的项目(并且您必须将这些子程序的规范(与它们在包主体中的外观相匹配)也拉入规范中。)

坦率地说,如果是我,我会花更多的时间尝试使用一些磁盘恢复工具来从磁盘上拉出任何我能做到的东西。

于 2010-01-31T19:28:54.593 回答
0

在 Ada95(和 2005)中,主要使用 adb 文件(偶尔使用 ads 文件),其他一切都是在运行时生成的。在您的情况下,adb 文件肯定是其他链接到其他广告文件的。

但是,广告文件通常是与程序的算法/数学结构有关的小程序(显然,如果您没有尝试像“用餐哲学家”那样真正异国情调的东西),如果您可以挖掘出您在项目中所做的事情,那么应该不是不可能恢复吧!

于 2010-02-26T07:27:39.697 回答