ada95有3个文件.ali,.adb和.o - 我可以编译

时间:2010-01-31 16:42:07

标签: gcc compilation ada

我找到了一些旧的大学作品,我最后的Ada95项目。可悲的是,光盘已损坏,我只能设法恢复3个文件(源和可执行文件无法恢复):

project.adb,project.ali和project.o

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

[编辑] shucks ....使用GCC编译project.adb抛出一个关于丢失的广告文件的错误,我无法恢复。

是否可以提取此/编译“.o”或“.ali”文件?或者,我被塞满了吗?

2 个答案:

答案 0 :(得分:3)

project.adb 是一个源文件。

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

package Project is
end Project;

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

如果你确实设法让你的逆向工程规范和正文编译,你仍然需要创建一个“驱动”程序“with”的项目包,并调用所执行的任何功能和/或程序你的项目的功能(你必须将这些子程序的规格 - 与它们在包体中的外观相匹配 - 拉到规范中。)

坦率地说,如果是我,我会花更多时间尝试使用一些磁盘恢复工具从磁盘上取下任何其他东西。

答案 1 :(得分:0)

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

然而,广告文件通常是小程序(显然,如果你没有尝试像餐饮哲学家那样充满异国情调的东西)与程序的算法/数学结构相关,如果你可以挖掘出你在做什么你的项目然后应该不可能恢复它!