Hvordan kompilere Linux-programmer under Windows med Cygwin

Windows og Linux er to vidt forskjellige systemer, og som sådan er det ofte ikke lett å portere programmer skrevet for det ene og det andre, spesielt når det kommer til GUI-programmer. Selv om det er mange forskjellige biblioteker og SDK-er mellom plattformer, er native programmer skrevet uten portabilitet i tankene ganske vanskelige å portere.

Når det gjelder å kompilere og kjøre programmer skrevet for Linux på Windows, er det en løsning kjent som Cygwin. Cygwin-prosjektet er en samling av de vanligste verktøyene og kompilatorene (inkludert bash-skallet og GNU-kompilatorkjeden) for Windows. Det inkluderer også et bibliotek som gir et kompatibilitetslag slik at programmer som kaller Linux-spesifikke APIer kan kompileres. Cygwin er ikke en emulator eller en virtuell maskin, og det er ikke nødvendig å kjøre Linux-binærfiler på Windows uten først å bli rekompilert.

Besøk installasjonssiden til Cygwin og last ned kjørbare 32-biters eller 64-biters oppsett (avhengig av hvilken variant av Windows du bruker). Kjør oppsettprogrammet. Klikk Neste og Neste igjen (for "Installer fra Internett"). Standardkatalogen er "C:cygwin". Den kan endres om nødvendig, men med mindre du har en spesifikk grunn til å endre den, er standarden best. Klikk Neste, Neste og Neste igjen.

Cygwin-prosjektet har speilsider over hele verden; velg den du tror fungerer best for din plassering, og klikk på Neste. Nå må du velge hvilke pakker som skal installeres. For å kompilere enkle Linux-programmer på Windows, trenger du GNU Compiler Chain (GCC) som gir en aC og C++ kompilator.

Skriv "gcc" i søkeboksen og klikk deretter på det lille plusstegnet ved siden av "Devel" i listen over pakker. Søk etter "gcc-core" og "gcc-g++" og klikk "Hopp over" for hver av dem. Ordet "Hopp over" vil bli konvertert til et versjonsnummer og "n/a"-tegnet i "Bin? Skriv "make" i søkefeltet og søk etter "make" i "Devel. Klikk "Hopp over" for å merke det for installering. Søk etter "wget" og merk det også for installering fra "Web". For å bygge eksemplet nedenfor trenger vi også "libiconv;" søk etter den og merk den for å installere den.

Klikk Neste. Installasjonsprogrammet vil da se hvilke andre pakker som må installeres for å løse eventuelle avhengigheter. Klikk på Neste for å godta anbefalingene.

Når alle pakkene er lastet ned og installert, følg de siste trinnene til installasjonsprogrammet avsluttes. Start "Cygwin Terminal" for å gå inn i det Linux-lignende utviklingsmiljøet. I terminalen brukes ikke Windows-kommandoer som "dir", men shell-kommandoer som "ls".

For å demonstrere hvordan du kompilerer et Linux-program under Windows, vil vi bruke Hvordan manipulere HTML- og XML-filer fra kommandolinjen.

Last ned kildefilene ved å bruke "wget":

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

Pakk nå ut arkivfilen:

tar -zxfhtml-xml-utils-6.7.tar.gz

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>.

Kildefilene er nå i katalogen "html-xml-utils-6.7". Gå inn i den katalogen:

cdhtml-xml-utils-6.7

Før filene kan bygges, må du kjøre configure shell-skriptet for å generere Makefile (byggeinstruksjonene) som passer for dette byggemiljøet. Dette er et vanlig trinn på Linux (og Cygwin) når du bygger pakker fra kildekode.

./configure

Når "konfigurere" er ferdig, kan du starte byggingen ved å bruke "make":

make

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>»»»»>>>>

Byggingen vil delvis mislykkes. Jeg var usikker på hva jeg skulle gjøre videre. Du kan bytte til et annet prosjekt og bygge det fra kilden eller gå videre med HTML-XML-verktøyene. Jeg har valgt det siste, da det viser at ikke alt vil være en tur i parken når jeg prøver å kompilere Linux-programmer under Cygwin. Løsningen på dette spesielle problemet er enkel. Feilmeldingen viser at linkeren ikke finner "iconv"-biblioteket. En rask titt på lenkekommandoen viser at biblioteket ikke er spesifisert. Den raske og skitne løsningen er å kjøre kommandoen manuelt og fortelle linkeren å bruke libconv. Den "riktige" måten å fikse dette på er å begynne å grave i Makefile osv. for å finne ut hvorfor det ikke fungerer.

Kjør følgende kommando, og merk inkluderingen av "-liconv" på slutten:

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" er opprettet, kan du fortsette med resten av bygget ved å skrive "make" på nytt. Måten «make» fungerer på er ved å sjekke hva som er bygget og hva som ikke er bygget, og deretter fortsette byggeprosessen på det aktuelle punktet. Siden vi manuelt har bygget "hxindex.exe", fortsetter "make" bare med neste binære i listen.

Når "make" er fullført, vil du ha alle. exe-filene i html-xml-utils-6.7-katalogen.

Hvis du blir sittende fast ved å bruke Cygwin, bør du se nærmere på FAQ og i dokumentasjon. Ellers har prosjektet et sett med e-postlister e-postlister. Hvis du har problemer med trinnene som er skissert ovenfor, vennligst bruk kommentarfeltet nedenfor.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Go up