2010-01-31 57 views
1

我發現了一些舊的大學工作,我最後的Ada95項目。可悲的是,該盤被損壞,並且我只設法恢復3個文件(源碼和可執行不可能是恢復):ada95有3個文件.ali,.adb和.o - 我可以編譯

project.adb,project.ali和project.o

是這3個文件足夠編譯一個新的exe文件?現在我下載蚊蚋編譯器,但不得不承認,我已經忘記了幾乎所有ADA相關...

弗蘭克

[編輯] 胡說....使用GCC編譯project.adb拋出一個關於缺少廣告文件的錯誤,我無法恢復。

是否可以提取/編譯「.o」或「.ali」文件?或者,我塞滿了?

+0

這個問題沒有人問:哪個「缺少.ads文件」?如果它是一個標準包,你可以下載並安裝...遊戲。如果它是實際項目資源的一部分,那麼運氣很好。 – 2014-02-27 11:35:48

回答

3

project.adb 的源文件。

既然你說gcc抱怨缺少.ads文件,那表明project.adb包含一個包體。你可以將手動構建相應的封裝規格以下爲package.ads:

package Project is 
end Project; 

現在,這幾乎可以肯定不夠的,因爲該項目可能規範有一些類型和常量聲明它,所以你必須分析您的包裹主體並確定其參考內容。推斷這些聲明應該是什麼樣子並添加它們。哦,如果你的軟件包主體「與」任何不屬於標準Ada庫的軟件包,你也必須恢復它們。

如果你確實設法得到你的反向工程規範和正文進行編譯,你仍然需要創建一個「驅動程序」程序,該程序使用「包含」項目包,並調用任何攜帶的函數和/或程序(你必須將這些子程序的規格 - 它們與包體中的外觀相匹配)也納入規範中。)

坦率地說,如果是我,我花更多的時間試圖使用一些磁盤恢復工具來拉我可以離開磁盤的任何東西。

+0

不用擔心,只是有點懷舊......謝謝 – frank 2010-01-31 22:44:01

0

在Ada95(和2005)中,大多數人使用adb文件(偶爾使用廣告文件),其他所有內容都在運行時生成。在你的情況下,adb文件肯定是其他鏈接到其他廣告文件。

但是,廣告文件通常是小程序(很明顯,如果你不想嘗試真正奇特的事情,像'餐飲哲學家'),它們與程序的算法/數學結構有關,如果你能挖掘出你做了什麼在你的項目中,它不應該是不可能的恢復它!

相關問題