2010-06-02 4 views
0

Год назад я разработал небольшой скрипт в perl для клиента и разработал его .exe, используя pp. мы доставили файл .exe вместе с базовыми файлами установки cygwin (1.52) для запуска этого .exe для клиента..exe, сгенерированный в cygwin 1.7, не работает на cygwin 1.52

Теперь у нас есть улучшения в скрипте. Мы потеряли всю среду для cygwin. Мы установили новый cygwin с версией 1.7, закодированным и сгенерированным файлом .exe. Этот файл не работает в среде клиента, у которого есть cygwin 1.52 .Просто это будет balnk после выполнения .exe

мы не можем просить заказчика обновить тестовую среду. , что это еще один способ заставить его работать .exe с cygwin dll 1.7 на cygwin 1.52. Любая помощь была бы высоко оценена.

Rgds, sowm

ответ

2

Разработчики Cygwin строги о совместимости снизу вверх, но они не пытаются обеспечить обратную совместимость между основными выпусками, как между 1,5 и 1,7. Это означает, что вы можете создать программу на 1.7, которая работает на 1.5, только до тех пор, пока вы не будете вызывать функции, которые были добавлены в Cygwin DLL в 1.7.

Скорее всего, причиной того, что ваш код вызывает только 1.7-функции, является то, что он использует библиотеки, которые автоматически обнаруживают возможности платформы. Могут быть и другие причины, но без каких-либо подробностей о том, что именно не удается, трудно догадаться.

Если проблема связана с сторонними библиотеками, как я предполагаю, может быть целесообразно потратить время на то, чтобы заставить их вернуться к общей функциональности, предоставляемой как 1.5, так и 1.7. Например, с помощью системы на основе autoconf вы можете вручную отредактировать файл config.h, созданный скриптом configure, чтобы отключить использование некоторых обнаруженных функций. Это, в свою очередь, означает создание всех этих библиотек из исходного кода, а не загрузку двоичных версий из репозитория проектов Cygwin и их использование напрямую.

Может быть проще вытащить окружающую среду Cygwin 1.5 из Cygwin Time Machine.

Кстати, вы знаете, что для распространения Cygwin и исполняемых файлов, построенных с ним, требуется, чтобы эти исполняемые файлы соответствовали GPL или покупали коммерческую лицензию Cygwin, так? Если не see the FAQ.