2010-06-02 77 views
0

一年前,我爲perl開發了一個用於客戶的小腳本,並使用pp開發了它的.exe。 我們提供了.exe文件以及基本的cygwin(1.52)安裝文件以將該.exe運行給客戶。在cygwin 1.7中生成的.exe沒有在cygwin上運行1.52

現在我們得到了在腳本的增強。我們失去了所有的開發環境的cygwin的。再次,我們安裝了新的Cygwin的1.7版本,編碼和生成的.exe文件。這個文件沒有在客戶環境中誰擁有1.52 cygwin的運行只需執行.exe

後就會出現問題,我們不能要求客戶維護測試環境。 什麼是使cygwin 1.52 cygwin dll 1.7運行.exe的其他方式。 任何幫助將不勝感激。

RGDS, sowm

回答

2

的Cygwin的開發商是嚴格有關的向上兼容性,但他們並沒有試圖提供主要的版本之間的向後兼容性,像1.5和1.7之間。這意味着只要你避免調用在1.7中添加到Cygwin DLL中的函數,你就可以在1.7上創建一個運行在1.5上的程序。

您的代碼調用1.7-only函數的最可能原因是它使用自動發現平臺功能的庫。可能還有其他原因,但沒有關於究竟失敗的細節,很難猜測。

如果問題是由第三方庫引起的,正如我猜測的那樣,花時間研究如何使它們恢復到1.5和1.7提供的通用功能可能是切實可行的。例如,使用基於autoconf的系統,您可以手動編輯配置腳本生成的config.h文件,以關閉某些已發現功能的使用。這反過來意味着自己從源代碼構建所有這些庫,而不是從Cygwin項目庫下載二進制版本並直接使用它們。

Cygwin Time Machine中拉出Cygwin 1.5環境可能更容易。

順便說一下,你知道分發Cygwin和與它一起構建的可執行文件需要這些可執行文件符合GPL,或者你購買了Cygwin商業分發許可證,對嗎?如果不是see the FAQ