2010-06-02 47 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