Τα Windows και το Linux είναι δύο πολύ διαφορετικά συστήματα και ως εκ τούτου συχνά δεν είναι εύκολο να μεταφέρετε προγράμματα γραμμένα μεταξύ τους, ειδικά όταν ασχολούνται με προγράμματα GUI. Παρόλο που υπάρχουν πολλές διαφορετικές βιβλιοθήκες και SDK για πολλαπλές πλατφόρμες, τα εγγενή προγράμματα που έχουν γραφτεί χωρίς φορητότητα είναι αρκετά δύσκολα στο λιμάνι.

Όταν πρόκειται για την κατάρτιση και εκτέλεση προγραμμάτων γραμμένα για Linux σε Windows, υπάρχει μια λύση γνωστή ως Cygwin. Το πρόγραμμα Cygwin είναι μια συλλογή από τα πιο συνηθισμένα εργαλεία και μεταγλωττιστές (συμπεριλαμβανομένου του κελύφους bash και της αλυσίδας μεταγλωττιστή GNU) για τα Windows. Περιλαμβάνει επίσης μια βιβλιοθήκη που παρέχει ένα στρώμα συμβατότητας, ώστε να μπορούν να συνταχθούν προγράμματα που καλούν συγκεκριμένα API του Linux. Το Cygwin δεν είναι εξομοιωτής ή εικονική μηχανή και δεν επιτρέπει στα δυαδικά αρχεία Linux να εκτελούνται σε Windows χωρίς να επανασυσκευάζονται.

Επισκεφθείτε τη σελίδα εγκατάστασης του Cygwin και κάντε λήψη του εκτελέσιμου προγράμματος εγκατάστασης 32-bit ή 64-bit (ανάλογα με την παραλλαγή των Windows που χρησιμοποιείτε). Εκτελέστε το πρόγραμμα εγκατάστασης. Κάντε κλικ στο Next (Επόμενο) και στο Next (Επανάληψη) (στο "Install from Internet"). Ο προεπιλεγμένος κατάλογος είναι "C: \ cygwin". Μπορεί να αλλάξει αν χρειαστεί, αλλά αν δεν έχετε συγκεκριμένο λόγο για να το αλλάξετε, η προεπιλογή είναι καλύτερη. Κάντε κλικ στο κουμπί Επόμενο, Επόμενο και Επόμενο.

Το έργο Cygwin έχει καθρέφτη τοποθεσίες σε όλο τον κόσμο? επιλέξτε ένα που νομίζετε ότι θα εξυπηρετήσει καλύτερα την τοποθεσία σας και κάντε κλικ στο κουμπί Επόμενο. Τώρα πρέπει να επιλέξετε ποια πακέτα θα εγκατασταθούν. Για να μεταγλωττίσετε απλά προγράμματα Linux στα Windows, θα χρειαστείτε την αλυσίδα μεταγλωττιστή GNU (GCC) η οποία παρέχει έναν μεταγλωττιστή C και C ++.

Πληκτρολογήστε "gcc" στο πλαίσιο αναζήτησης και στη συνέχεια κάντε κλικ στο μικρό σύμβολο συν δίπλα στην επιλογή "Devel" στη λίστα των πακέτων. Βρείτε "gcc-core" και "gcc-g ++" και κάντε κλικ στο "Skip" για κάθε μία. Η λέξη "Skip" θα αλλάξει σε αριθμό έκδοσης και το σύμβολο "n / a" στη στήλη "Bin?" Θα μετατραπεί σε ετικέτα. Πληκτρολογήστε "make" στο πλαίσιο αναζήτησης και βρείτε "make" στο "Devel." Κάντε κλικ στο "Skip" για να το επισημάνετε για εγκατάσταση. Αναζητήστε το "wget" και σημειώστε το για εγκατάσταση από το "Web." Για να δημιουργήσετε το παρακάτω παράδειγμα, θα χρειαστεί επίσης "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 

Προτού να μπορέσετε να δημιουργήσετε τα αρχεία, πρέπει να εκτελέσετε το σενάριο κειμένου "configure" για να δημιουργήσετε το Makefile (τις οδηγίες κατασκευής) που είναι κατάλληλα για αυτό το περιβάλλον δημιουργίας. Αυτό είναι ένα κοινό βήμα για το Linux (και Cygwin) κατά την κατασκευή των πακέτων από την πηγή.

 ./Διαμορφώστε 

Αφού ολοκληρωθεί η διαδικασία "configure", μπορείτε να ξεκινήσετε την κατασκευή χρησιμοποιώντας το "make":

 φτιαχνω, κανω 

Η κατασκευή θα αποτύχει εν μέρει. Είχα δύο μυαλά για το τι πρέπει να κάνω έπειτα. Είτε θα μπορούσα να μεταβείτε σε άλλο έργο και να το οικοδομήσετε από την πηγή του ή να μάθετε με τα HTML-XML-utils. Επέλεξα το τελευταίο, καθώς δείχνει ότι όλα δεν θα είναι ένα walk-in-the-parc όταν προσπαθεί να καταρτίσει προγράμματα Linux υπό Cygwin. Η λύση αυτού του συγκεκριμένου προβλήματος είναι απλή. Το μήνυμα σφάλματος δείχνει ότι ο σύνδεσμος δεν μπορεί να βρει τη βιβλιοθήκη "iconv". Μια γρήγορη ματιά στην εντολή συνδέσμου δείχνει ότι η βιβλιοθήκη δεν έχει καθοριστεί. Η γρήγορη και βρώμικη λύση είναι να εκτελέσετε την εντολή με μη αυτόματο τρόπο και να πείτε στο linker να χρησιμοποιήσει το libconv. Ο "σωστός" τρόπος για να διορθώσετε αυτό θα ήταν να αρχίσετε να ψάχνετε στο Makefile κλπ. Για να μάθετε γιατί δεν λειτουργεί.

Εκτελέστε την ακόλουθη εντολή, σημειώνοντας την ένδειξη "-liconv" στο τέλος:

 gcc -g -O2 -ο 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 κεφαλίδες .ο 

Αφού δημιουργηθεί το αρχείο "hxindex.exe", μπορείτε να συνεχίσετε με το υπόλοιπο του build, πληκτρολογώντας ξανά το "make". Ο τρόπος "make" λειτουργεί είναι να ελέγχει τι έχει και δεν έχει κατασκευαστεί, και στη συνέχεια συνεχίζει τη διαδικασία κατασκευής στο κατάλληλο σημείο. Δεδομένου ότι έχουμε χτίσει με το χέρι το "hxindex.exe", το "make" συνεχίζει με το επόμενο δυαδικό στον κατάλογο του.

Όταν ολοκληρωθεί το "make", θα έχετε όλα τα αρχεία .exe στον κατάλογο html-xml-utils-6.7.

Αν κολλήσετε χρησιμοποιώντας το Cygwin, θα πρέπει να δείτε τα FAQ και την τεκμηρίωση. Σε αντίθετη περίπτωση, το έργο έχει ένα σύνολο λιστών αλληλογραφίας. Αν έχετε προβλήματα με τα βήματα που περιγράφονται παραπάνω, χρησιμοποιήστε την παρακάτω ενότητα σχολίων.