Windows и Linux са две много различни системи и като такава, често не е лесно да прехвърляте програми, писани за един на друг, особено когато се занимавате с GUI програми. Въпреки че има много различни библиотеки и SDK за междуплатформени програми, естествените програми, написани без преносимост, са доста трудни за порт.

Когато става дума за компилиране и изпълнение на програми, написани за Linux на Windows, има решение, известно като Cygwin. Проектът Cygwin е съвкупност от най-често използваните инструменти и компилатори (включително башийната обвивка и веригата за компилиране на GNU) за Windows. Той също така включва библиотека, която осигурява слой за съвместимост, така че програми, които наричат ​​специфични API на Linux, да могат да се компилират. Cygwin не е емулатор или виртуална машина и не позволява на дънните библиотеки на Linux да се изпълняват на Windows, без да бъдат преработени.

Посетете страницата за инсталиране на Cygwin и изтеглете 32-битовата или 64-битовата инсталационна програма (в зависимост от вида на Windows, който използвате). Изпълнете инсталационната програма. Кликнете пак на следващия и следващия (към "Инсталиране от интернет"). Директорията по подразбиране е "C: \ cygwin". Тя може да бъде променена, ако е необходимо, но ако нямате конкретна причина да я промените, по подразбиране е най-добре. Натиснете Next, Next и Next отново.

Проектът Cygwin има огледални сайтове в цял свят; изберете този, който според вас най-добре ще обслужва местоположението ви и кликнете върху Напред. Вече трябва да изберете кои пакети да инсталирате. За да компилирате прости Linux програми в Windows, ще ви е необходима GNU Compiler Chain (GCC), която предоставя компилатор C и C ++.

Въведете "gcc" в полето за търсене и след това кликнете върху малкия знак плюс "Devel" в списъка с пакети. Намерете "gcc-core" и "gcc-g ++" и кликнете върху "Skip" за всяка. Думата "Пропускане" ще се промени в номер на версията и знакът "n / a" в колоната "Кошче" ще се превърне в отметнато поле. Въведете "make" в полето за търсене и намерете "make" в "Devel." Кликнете върху "Skip", за да го маркирате за инсталиране. Търсете "wget" и го маркирайте за инсталиране от "Уеб". За да създадем примера по-долу, ще трябва също така "libiconv;" да го търсим и да го маркираме за инсталиране.

Кликнете върху Напред. След това инсталаторът ще види какви други пакети трябва да бъдат инсталирани, за да разрешат зависимостите. Кликнете върху Напред, за да приемете препоръките.

След като всички пакети бъдат изтеглени и инсталирани, следвайте последните стъпки, докато инсталаторът излезе. Започнете "Cygwin Terminal", за да влезете в подобна на Linux среда за разработка. В терминала не използвате команди на Windows като "dir", а по-скоро shell команди като "ls".

За да покажем как да компилираме Linux програма под Windows, ще използваме пакета HTML-XML от W3. За да видите какво може да направи, вижте Как да манипулирате HTML и XML файлове от командния ред.

Изтеглете изходните файлове, като използвате "wget":

 wget http://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz 

Сега разопаковайте архивния файл:

 tar -zxf html-xml-utils-6.7.tar.gz 

Файловете източник сега са в директорията "html-xml-utils-6.7". Въведете тази директория:

 cd html-xml-utils-6.7 

Преди файловете да могат да бъдат изградени, трябва да изпълните "скрипта за конфигуриране", за да генерирате Makefile (инструкциите за инсталиране), които са подходящи за тази среда за създаване. Това е обща стъпка към Linux (и Cygwin) при изграждането на пакети от източника.

 ./configure 

След като "configure" завърши, можете да започнете изграждането с помощта на "make":

 правя 

Изграждането ще се провали частично. Бях в две разсъждения за това какво да направим по-нататък. Бих могъл да превключа към друг проект и да го изградя от своя източник или битка с HTML-XML-utils. Аз избрах за втория, тъй като показва, че не всичко ще бъде разходка в парка, когато се опитвате да компилирате Linux програми под Cygwin. Решението на този конкретен проблем е проста. Съобщението за грешка показва, че линкерът не може да намери библиотеката "iconv". Бърз поглед към командата на връзката показва, че библиотеката не е посочена. Бързото и мръсно решение е ръчно да стартирате командата и да кажете на линкера да използва libconv. "Правилният" начин за отстраняване на това ще бъде да се впуснете в Makefile и т.н., за да разберете защо не работи.

Изпълнете следната команда, отбелязвайки включването на "-liconv" в края:

 gcc -g -O2 -o hxindex.exe hxindex.o сканиране.о html.o openurl.o url.o heap.o class.o errexit.o свързванеock.o types.o tree.o genid.o dtd.o заглавия .o dict.o fopencookie.o -liconv 

След като бъде създаден файлът "hxindex.exe", можете да продължите с останалата част от изграждането, като въведете отново "make". Начинът, по който "make" работи, проверява какво е и не е построено, и след това продължава процесът на изграждане в подходящата точка. Тъй като сме създали ръчно "hxindex.exe", "make" току-що продължава със следващата двоична в списъка си.

Когато "make" завърши, ще имате всички .exe файлове в директорията html-xml-utils-6.7.

Ако се заразете с Cygwin, трябва да разгледате често задаваните въпроси и документацията. В противен случай проектът има набор от пощенски списъци. Ако имате някакви проблеми с описаните по-горе стъпки, моля, използвайте секцията за коментари по-долу.