Windows och Linux är två väldigt olika system, och som sådan är det ofta inte lätt att porta program skrivna för varandra, särskilt när man arbetar med GUI-program. Även om det finns många olika plattformsbibliotek och SDK, är inbyggda program skrivna utan portabilitet i åtanke ganska svår att porta.

När det gäller att sammanställa och köra program skrivna för Linux på Windows, finns en lösning som kallas Cygwin. Cygwin-projektet är en samling av de vanligaste verktygen och kompilatorn (inklusive bash-skalet och GNU-kompilatorkedjan) för Windows. Det innehåller också ett bibliotek som tillhandahåller ett kompatibilitetslager så att program som kallar Linux-specifika API kan sammanställas. Cygwin är inte en emulator eller en virtuell maskin, och det tillåter inte att Linux-binärer körs på Windows utan att först sammanställas.

Besök installationssidan för Cygwin och ladda ner 32-bitars eller 64-bitars installationsprogrammet (beroende på vilken variant av Windows du använder). Utför installationsprogrammet. Klicka på Nästa och Nästa igen (till "Installera från Internet"). Standardkatalogen är "C: \ cygwin". Det kan ändras om det behövs, men om du inte har någon särskild anledning att ändra det är standard bäst. Klicka på Nästa, Nästa och Nästa igen.

Cygwin-projektet har spegelsites över hela världen. välj en som du tycker bäst tjänar din plats och klicka på Nästa. Du behöver nu välja vilka paket som ska installeras. För att kompilera enkla Linux-program i Windows behöver du GNU Compiler Chain (GCC) som tillhandahåller en C och C ++ kompilator.

Skriv "gcc" i sökrutan och klicka sedan på det lilla plustecknet bredvid "Utveckla" i listan över paket. Hitta "gcc-core" och "gcc-g ++" och klicka på "Skip" för var och en. Ordet "Skip" kommer att ändras till ett versionsnummer och "n / a" -tecknet i kolumnen "Bin?" Blir en kryssrutan. Skriv "make" i sökrutan och hitta "make" under "Devel." Klicka på "Hoppa över" för att markera den för installation. Sök efter "wget" och markera den även för installation från "Web." För att bygga exemplet nedan behöver vi också "libiconv;" söka efter det och markera det för installation.

Klicka på Nästa. Installatören ser då vilka andra paket som behöver installeras för att lösa eventuella beroenden. Klicka på Nästa för att acceptera rekommendationerna.

När alla paket har laddats ner och installerats, följ de sista stegen tills installationsprogrammet avslutas. Starta "Cygwin Terminal" för att komma in i Linux-liknande utvecklingsmiljö. I terminalen använder du inte Windows-kommandon som "dir" utan snarare skal kommandon som "ls".

För att visa hur man sammanställer ett Linux-program under Windows använder vi HTML-XML-paketet från W3. För en titt på vad det kan göra, se Hur man manipulerar HTML- och XML-filer från kommandoraden.

Hämta källfilerna med "wget":

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

Pakna arkivfilen nu:

 tjära -zxf html-xml-utils-6.7.tar.gz 

Källfilerna finns nu i katalogen "html-xml-utils-6.7". Ange den katalogen:

 cd html-xml-utils-6.7 

Innan filerna kan byggas måste du köra "configure" skalskriptet för att skapa Makefile (byggnadsinstruktionerna) som är lämpliga för denna byggmiljö. Detta är ett vanligt steg på Linux (och Cygwin) när man bygger paket från källan.

 ./configure 

När "configure" är klar kan du börja bygga med "make":

 göra 

Byggnaden kommer att misslyckas delvis. Jag var i två sinnen om vad jag ska göra nästa. Antingen skulle jag kunna byta till ett annat projekt och bygga det från källan eller kämpa vidare med HTML-XML-utils. Jag valde det senare eftersom det visar att inte allt kommer att vara en walk-in-the-park när man försöker kompilera Linux-program under Cygwin. Lösningen på det här problemet är enkelt. Felmeddelandet visar att länken kan inte hitta "iconv" -biblioteket. En snabb titt på länkkommandot visar att biblioteket inte är angivet. Den snabba och smutsiga lösningen är att köra kommandot manuellt och berätta för länken att använda libconv. Det "korrekta" sättet att fixa detta skulle vara att börja gräva in i Makefile etc. för att få reda på varför det inte fungerar.

Kör följande kommando och notera att "-liconv" ingår i slutet:

 gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o connectsock.o types.o tree.o genid.o dtd.o headers .o dict.o fopencookie.o -liconv 

När filen "hxindex.exe" är byggd kan du fortsätta med resten av byggnaden genom att skriva "göra" igen. Det sätt som "make" fungerar är att det kontrollerar vad som har och inte har byggts, och sedan fortsätter byggprocessen på lämplig punkt. Eftersom vi manuellt har byggt "hxindex.exe", gör "make" bara med nästa binära i sin lista.

När "make" slutförts kommer du att ha alla .exe-filer i katalogen html-xml-utils-6.7.

Om du fastnar med Cygwin bör du titta på FAQ, och i dokumentationen. Om projektet misslyckas har projektet en uppsättning postlistor. Om du har några problem med de ovan beskrivna stegen, använd sedan kommentarfältet nedan.