ΕΙΣΑΓΩΓΗ ΣΤΟ ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι Βάνα Ντουφεξή Περιβάλλον ΠΡΩΤΑ ΒΗΜΑΤΑ ΣΤΟ ΕΡΓΑΣΤΗΡΙΟ Το εργαστήριο γίνεται σε περιβάλλον Linux µε γραφικό περιβάλλον KDE. Το φυλλάδιο αυτό απευθύνεται σε φοιτητές που δεν έχουν προηγούµενη επαφή µε Linux αλλά έχουν χρησιµοποιήσει Windows. Ξεκινώντας Για να µπορέσετε να χρησιµοποιήσετε τους υπολογιστές του εργαστηρίου πρέπει να έχετε προσωπικό λογαρισµό σε αυτούς. Η διαδικασία απόκτησης λογαριασµού θα ολοκληρωθεί κατά τη διάρκεια του πρώτου εργαστηρίου. Θα σας δοθεί ένα προσωπικό όνοµα χρήστη (username) και αρχικό συνθηµατικό (password). Το τεχνικό προσωπικό του εργαστηρίου θα σας καθοδηγήσει στη διαδικασία εισόδου στο λογαριασµό σας και αλλαγής του password. Το password που θα θέσετε στο λογαριασµό σας πρέπει να το κρατήσετε µυστικό και να µην επιτρέπετε ποτέ σε τρίτα άτοµα πρόσβαση στο λογαριασµό σας για οποιοδήποτε λόγο. Πρώτη επαφή Όταν µπείτε στο λογαριασµό σας θα δείτε την επιφάνεια εργασίας η οποία περιέχει, ανάµεσα στα άλλα : FireFox: Ο γνωστός browser. Office: Πακέτο εφαρµογών γραφείου που περιλαµβάνει επεξεργαστή κειµένου, υπολογιστικό φύλλο, κτλ. My Computer: Ανοίγει ένα παράθυρο µε πληροφορίες για το σύστηµά σας. Από αυτό το παράθυρο µπορείτε να αποκτήσετε εύκολη πρόσβαση στους προσωπικούς σας φακέλους (Home, Documents) Το Start button βρίσκεται κάτω αριστερά και µοιάζει µε το κεφάλι ενός πράσινου χαµελαίοντα. Όταν κάνετε click σε αυτό θα εµφανιστεί ένα panel µε πέντε tabs: Favorites, Applications, Computer, Recently Used, Leave. Auto το είδος µενού λέγεται Kickoff menu style. 1
Αν προτιµάτε το µενού να µοιάζει πιο πολύ µε Windows (χωρίς tabs), τότε κάντε δεξί click στο Start button και επιλέξτε Switch to Classic menu style. Λίγο πιο δεξιά από το Start button βρίσκεται ένα εικονίδιο που µοιάζει µε συρταριέρα και λέγεται Dolphin. Αν κάνετε click σε αυτό, ανοίγει ένα παράθυρο το οποίο σας εµφανίζει τον προσωπικό σας φάκελο. Στις επόµενες σελίδες υπάρχουν περισσότερες πληροφορίες για τον προσωπικό χώρο του κάθε χρήστη. Οι εφαρµογές που θα χρησιµοποιήσετε για τον Προγραµµατισµό Ι είναι: Terminal: Ανοίγει ένα παράθυρο τερµατικού. Στο Classic µενού βρίσκεται στο System Terminal.Console. Στο Kickoff µενού, βρίσκεται στο Applications System Terminal Terminal. Περισσότερες πληροφορίες γι αυτό βρίσκονται παρακάτω. Kate: To Kate είναι ένας επεξεργαστής κειµένου που µπορείτε να χρησιµοποιήτε για να γράφετε τα προγράµµατά σας. Στο Classic µενού βρίσκεται στο Utilities Editor Kate ενώ στο Kickoff µενού βρίσκεται στο Applications Utilities Editor Advanced Text Editor. Εναλλακτικά, ο συνδυασµός Alt-F2 εµφανίζει ένα παράθυρο διαλόγου στο οποίο µπορείτε να γράψετε το όνοµα του προγράµµατος που θέλετε να χρησιµοποιήσετε (πχ. kate ή terminal). Θα σας εµφανιστεί µια λίστα από επιλογές και µπορείτε να κάνετε click σε αυτό που θέλετε. Όταν τελειώσετε τη δουλειά σας πρέπει οπωσδήποτε να βγείτε από το λογαριασµό σας πριν φύγετε από το εργαστήριο. Κάντε click στο Start Button και επιλέξτε Leave Logout αν είστε στο Classic µενού ή Leave Logout και µετά πάλι Logout αν είστε στο Kickoff µενού. Χρησιµοποιώντας Memory Stick Όταν βάλετε memory stick στην είσοδο USB αναγνωρίζεται αµέσως και ανοίγει στην επιφάνεια εργασίας. Μπορείτε να µεταφέρετε αρχεία ανάµεσα στο memory stick και τον υπολογιστή σας µε drag and drop όπως και στα Windows. Όταν τελειώσετε, πρέπει να κάνετε ασφαλή αφαίρεση: Ανοίξτε το Dolphin ή το My Computer, βρείτε το USB στη λίστα δίσκων κάντε δεξί click και επιλέξτε Safely Remove. ΠΡΟΣΟΧΗ: Αν δε γίνει ασφαλής αφαίρεση, τότε υπάρχει µεγάλη πιθανότητα να χάσετε τα αρχεία που µεταφέρατε στο memory stick. 2
ΕΙΣΑΓΩΓΗ ΣΤΟ LINUX Περιβάλλον γραµµής εντολών Αν έχετε χρησιµοποιήσει Windows, τότε έχετε ήδη µια εξοικείωση µε ένα γραφικό περιβάλλον (graphical interface). Το Linux έχει παρόµοιο γραφικό περιβάλλον. Σε αυτό το φυλλάδιο όµως θα δούµε πώς χρησιµοποιείται το περιβάλλον γραµµής εντολών (command-line interface). Η κύρια διαφορά µεταξύ τους είναι ότι ενώ στο γραφικό περιβάλλον ο χρήστης δουλεύει κυρίως µε το ποντίκι για να "πηγαίνει" σε φακέλους ή για να επιλέγει εντολές από µενού, στο περιβάλλον γραµµής εντολών δουλεύει κυρίως µε το πληκτρολόγιο. Γράφει εντολές σε ένα ειδικό παράθυρο που λέγεται τερµατικό (terminal window) οι οποίες ερµηνεύονται και εκτελούνται από ένα ειδικό πρόγραµµα. Δοµή αρχείων Μπείτε στο λογαριασµό σας και ανοίξτε ένα τερµατικό (terminal) όπως περιγράφεται στο προηγούµενο κεφάλαιο. Αυτή τη στιγµή βρίσκεστε σε περιβάλλον γραµµής εντολών (commandline). Μπορείτε να πληκτρολογήσετε εντολές για να δείτε σε ποιο φάκελο βρίσκεστε, για να ανοίξετε ένα άλλο φάκελο, για να δηµιουργήσετε ένα καινούργιο φάκελο ή αρχείο για να τρέξετε προγράµµατα και πολλά άλλα πράγµατα που θα ανακαλύψετε σιγά σιγά. Το σύστηµα αρχείων στο linux είναι οργανωµένο σε µορφή δέντρου (σχήµα 1). Στην κορυφή βρίσκεται το λεγόµενο root directory ή root folder ( / ). Κάτω από το root βρίσκονται διάφοροι φάκελοι. Από αυτούς αξίζει να σηµειώσουµε τους: bin: Περιέχει τις εντολές του linux. usr: Περιέχει διάφορους φακέλους ένας εκ των οποίων είναι ο φάκελος µε τα include files της C (θα µάθετε για include files στη θεωρία) home: Στο σύστηµα του εργαστηρίου, το home περιέχει ένα φάκελο µε όνοµα inf2010 µέσα στον οποίο βρίσκονται τα λεγόµενα home folders των φοιτητών, δηλαδή οι προσωπικοί φάκελοι των χρηστών. Για παράδειγµα, σε ένα σύστηµα µε τρεις χρήστες, user1, user2, user3, υπάρχουν τρία home folders µε ονόµατα user1, user2, user3 αντίστοιχα. προσωπικοί φάκελοι χρηστών (στο σχήµα: user1, user2, user3) Όταν ένας από τους χρήστες "µπει" στο λογαριασµό του και ανοίξει ένα τερµατικό, τότε αυτό ανοίγει στον προσωπικό του φάκελο. Μέσα σε αυτόν βρίσκονται άλλοι φάκελοι, όπως το Documents που αναφέραµε πιο πάνω. 3
/ usr bin etc home include lib ls cd inf2009 stdio.h stdlib.h user1 user2 user3 CE120 my_music φάκελος αρχείο lab1 lab2 hello.c a.out lab1.pdf Σχήµα 1: Οργάνωση αρχείων στο Linux Πλοήγηση και δηµιουργία φακέλων Η θέση ενός φακέλου ή αρχείου στο δέντρο εκφράζεται µέσα από ένα µονοπάτι (path). Για παράδειγµα, η θέση του lab1 όπως φαίνεται στο σχήµα 1 είναι /home/inf2010/user2/ce120/lab1. Οµοίως, το home folder του χρήστη user2 είναι στο µονοπάτι /home/inf2010/user2 Όταν ένα µονοπάτι ξεκινά από το root, όπως στο παραπάνω παράδειγµα, τότε λέγεται "απόλυτο" (absolute path). Όταν ένα µονοπάτι ξεκινά από τον φάκελο στον οποίο βρισκόµαστε, τότε λέγεται "σχετικό" (relative path). Για παράδειγµα, αν βρισκόµαστε ήδη στο /home/inf2010/user2, τότε µπορούµε να εκφράσουµε το µονοπάτι προς στο lab1 ως CE120/lab1 Κάθε φάκελος περιέχει και δύο ειδικούς φακέλους:. : δίνει πρόσβαση στον τρέχοντα φάκελο (π.χ. όταν θέλουµε να µεταφέρουµε ένα αρχείο σε αυτόν).. : δίνει πρόσβαση στο γονέα του, δηλαδή το φάκελο ακριβώς από πάνω στο δέντρο. Ας δούµε τώρα µερικές εντολές που µας επιτρέπουν να κινηθούµε στο δέντρο αρχείων, και να δηµιουργήσουµε ή καταστρέψουµε αρχεία. Ανοίξτε ένα τερµατικό και δοκιµάστε της. Ό,τι τυπώνει ο χρήστης είναι γραµµένο µε έντονους χαρακτήρες. Το % στην αρχή κάθε γραµµής είναι το 4
σύµβολο που εµφανίζεται στο τερµατικό όταν είναι έτοιµο να δεχτεί µια εντολή σας. Πιθανώς στο δικό σας τερµατικό να εµφανίζεται κάτι διαφορετικό, για παράδειγµα το µονοπάτι στο οποίο βρίσκεστε κάθε στιγµή. Προσέξτε: To Linux είναι case-sensitive, δηλαδή ευαίσθητο στα κεφαλαία και µικρά γράµµατα. Το Pwd είναι τελείως διαφορετικό από το pwd. pwd = Πού είµαι? [Print Working Directory] Αυτή η εντολή τυπώνει το απόλυτο µονοπάτι προς τον τρέχοντα φάκελο. /home/inf2010/user2/ ls = Τι υπάρχει εδώ? [LiSt] Αυτή η εντολή εκτυπώνει µια λίστα των περιεχοµένων ενός φακέλου. Μπορούµε να προσδιορίσουµε επιπλέον επιλογές που µας επιτρέπουν να δούµε περισσότερες πληροφορίες. /home/inf2010/user2/ Desktop/ Documents/ -a./../ Desktop/ Documents/ Συνήθως, οι φάκελοι εµφανίζονται µε µια κάθετο µετά το όνοµά τους για να τους ξεχωρίζουµε από απλά αρχεία. Η επιλογή -a εκτυπώνει και όλα τα αρχεία ή φακέλους που το όνοµά τους ξεκινά από µια τελεία (συχνά υπάρχουν και άλλα ειδικά αρχεία σε αυτή την κατηγορία) cd µονοπάτι = Πήγαινε µε στο... [Change Directory] Αυτή η εντολή δέχεται ένα µονοπάτι (απόλυτο ή σχετικό) και σας µεταφέρει εκεί. /home/inf2010/user2/ % cd Desktop /home/inf2010/user2/desktop/ Στο παραπάνω παράδειγµα χρησιµοποιήσαµε σχετικό µονοπάτι. Θα είχαµε το ίδιο αποτέλεσµα αν είχαµε γράψει cd /home/inf2010/user2/desktop /home/inf2010/user2/desktop/ 5
% cd../documents /home/inf2010/user2/documents/ % cd haha haha: No such file or directory. /home/inf2010/user2/documents/ % cd../../user1 user1: Permission denied. % cd /home/inf2010/user2/ Στην προτελευταία χρήση του cd στο παραπάνω παράδειγµα προσπαθήσαµε να µπούµε στο φάκελο ενός άλλου χρήστη και φυσικά το σύστηµα µας το απαγόρευσε. Όταν δέν προσδιορίζουµε µονοπάτι, το cd µας πηγαίνει πάντα στο home directory. mkdir όνοµα_φακέλου = Φτιάξε µου αυτό το φάκελο Αυτή η εντολή δηµιουργεί ένα νέο, άδειο φάκελο µέσα στον τρέχοντα φάκελο. % cd % mkdir CE120 CE120/ Desktop/ Documents/ % mkdir photos games CE120/ Desktop/ Documents/ games/ photos/ rmdir όνοµα_φακέλου = Κατέστρεψε αυτό το φάκελο [ReMove DIRectory] Αυτή η εντολή καταστρέφει ένα φάκελο, αλλά µόνο αν είναι άδειος. % cd ~/CE120 % mkdir lab1 % cd.. % rmdir CE120 rmdir: CE120: Directory not empty % mkdir junk CE120/ Desktop/ Documents/ junk/ % rmdir junk CE120/ Desktop/ Documents/ ΠΡΟΣΟΧΗ: Όταν σβήνετε ένα αρχείο ή φάκελο στο Linux από τη γραµµή εντολών, δε µπορείτε να το ανακτήσετε και δε γίνεται back up στις µηχανές του εργαστηρίου. 6
Μεταφορές κι αντιγραφές αρχείων Σε αυτό το κεφάλαιο θα καλύψουµε εντολές για τη µεταφορά αρχείων και φακέλων, µετονοµασία, αντιγραφή και διαγραφή. Χακεριά: επειδή δεν έχουµε ακόµη δει πως δηµιουργούµε αρχεία, µπορείτε να χρησιµοποιήσετε την εντολή touch όνομα_ αρχείου όποτε θέλετε να δηµιουργήσετε ένα άδειο αρχείο για δοκιµάσετε τις παρακάτω εντολές. Για παράδειγµα, touch test δηµιουργεί ένα αρχείο µε όνοµα test στον τρέχοντα φάκελο. mv πηγή προορισµός = Μετακίνησέ µε! Μετονόµασέ µε! [MoVe] Αυτή η εντολή µετακινεί την πηγή στον προορισµό. Αν ο προορισµός είναι οτιδήποτε εκτός από ένας ήδη υπάρχον φάκελος, τότε η χρήση της εντολής ουσιαστικά µετονοµάζει την πηγή σε προορισµό. ΠΡΟΣΟΧΗ: Αν ο προορισµός υπάρχει ήδη, τότε θα αντικατασταθεί από την πηγή! % cd ~/CE120/lab1 % touch a.out hello.c lab1.pdf a.out hello.c lab1.pdf % mv lab1.pdf ergastirio1.pdf a.out ergastirio1.pdf hello.c Το lab1.pdf µετονοµάστηκε σε ergastirio1.pdf a.out ergastirio1.pdf hello.c % mv a.out hello.c ergastirio1.pdf hello.c Oops! Μεταφέραµε το a.out στο hello.c. Αυτό σηµαίνει ότι τώρα τα περιεχόµενα του hello.c έχουν αντικατασταθεί από τα περιεχόµενα του a.out. Αν αυτό έγινε κατα λάθος, ΔΕΝ υπάρχει τρόπος να ανακτήσουµε τα προηγούµενα περιεχόµενα του hello.c. Για να αποφεύγουµε τέτοια λάθη, µπορούµε να χρησιµοποιούµε το mv µε την επιλογή -i οπότε µας ενηµερώνει αν πρόκειται να αντικαταστήσουµε ένα υπάρχον αρχείο. % touch a.out % mv -i a.out hello.c overwrite hello.c? (y/n [n]) n not overwritten Αν ο προορισµός είναι υπάρχων φάκελος τότε η πηγή µεταφέρεται µέσα στον προορισµό. 7
/home/inf2010/user2/ce120/lab1 a.out ergastirio1.pdf hello.c % mv hello.c../ a.out ergastirio1.pdf % cd../ hello.c lab1/ Σε αυτή την περίπτωση µπορούµε να έχουµε και πολλαπλές πηγές (αρκεί ο προορισµός να είναι φάκελος που υπάρχει ήδη). Για παράδειγµα, πιο πάνω θα µπορούσαµε να είχαµε µεταφέρει και το a.out µε την εντολή mv hello.c a.out../ cp αρχείο-πηγή αρχείο-προορισµός = Αντέγραψέ µε! [CoPy] Αυτή η εντολή αντγράφει τα περιεχόµενα του αρχείου-πηγή στο αρχείο προορισµός. Αν το αρχείοπροορισµός υπάρχει ήδη, τότε τα περιεχόµενά του αντικαθίστανται από αυτά της πηγής και δε µπορούν να ανακληθούν. Η επιλογή -i ισχύει κι εδώ όπως και στη mv. rm αρχείο = Σβήσε µε! [ReMove] Αυτή η εντολή σβήνει ένα αρχείο. Το αρχείο ΔΕ µπορεί να ανακτηθεί. Η εντολή µπορεί να χρησιµοποιηθεί µε την επιλογή -r για να σβήσει ένα φάκελο και όλα τα περιεχόµενά του. /home/inf2010/user2/ce120/lab1/ % rm hello.c a.out ergastirio.pdf % cd.. % rm -r lab1 lab2/ Κι εδώ ισχύει η επιλογή -i όπως στη cp και mv. Και για να µην ξεχνάτε: ΠΡΟΣΟΧΗ: Όταν σβήνετε ένα αρχείο ή φάκελο στο Linux από τη γραµµή εντολών, δε µπορείτε να το ανακτήσετε. Wildcards Πολλές φορές χρειάζεται να εφαρµόσετε µια εντολή σε ένα σύνολο αρχείων. Αυτό µπορείτε να το επιτύχετε µε τη χρήση wildcards τα οποία λειτουργούν ως µπαλαντέρ στο όνοµα αρχείων. Αν µπορείτε να βρείτε κάποιο µοτίβο (pattern) στα ονόµατα ενός συνόλου αρχείων, τότε µπορείτε να χρησιµοποιήσετε wildcards. 8
Το? (ερωτηµατικό) λειτουργεί ως µπαλαντέρ για ένα ακριβώς χαρακτήρα. Για παράδειγµα, αν ένας φάκελος περιέχει τα αρχεία lab1.pdf lab2.pdf labk.pdf, τότε µπορούµε να τα σβήσουµε όλα µαζί µε την εντολή rm lab?.pdf. Aν ο φάκελος περιείχε και το αρχείο lab12.pdf δε θα σβηνόταν (το ερωτηµατικό είναι µπαλαντέρ για ακριβώς ένα χαρακτήρα ανάµεσα στο lab και τo.pdf ενώ το 12 είναι δύο χαρακτήρες. Το * (αστερίσκος) λειτουργεί ως µπαλαντέρ για πολλαπλούς χαρακτήρες. Για παράδειγµα, αν ένας φάκελος περιέχει τα αρχεία: lab1.pdf lab124.pdf lalala.pdf lab1.c hello.c test τότε το lab*.pdf αντιστοιχεί στα lab1.pdf lab124.pdf το l*.pdf αντιστοιχεί στα lab1.pdf lab124.pdf lalala.pdf το lab* αντιστοιχεί στα lab1.pdf lab124.pdf lab1.c το *.* αντιστοιχεί στα lab1.pdf lab124.pdf lalala.pdf lab1.c hello.c το * αντιστοιχεί σε όλα τα αρχεία του φακέλου. Αυτό σηµαίνει πως αν πάτε στο home directory σας και γράψετε rm * ή rm -r * τότε τη βάψατε... Αναζητήσεις Πολλές φορές ψάχνουµε ένα αρχείο χωρίς να ξέρουµε που βρίσκεται ή ψάχνουµε ένα αρχείο που περιέχει µια συγκεκριµένη λέξη ή φράση. Το Linux έχει εντολές και για τις δύο λειτουργίες. grep φράση τοποθεσία = Ποιο αρχείο περιέχει τη φράση? Αυτή η εντολή ψάχνει µια λέξη ή φράση σε ένα ή περισσότερα αρχεία κι εκτυπώνει τις γραµµές των αρχείων που περιέχουν το στόχο. Αν η τοποθεσία είναι φάκελος, µπορούµε να χρησιµοποιήσουµε την επιλογή -r η οποία µας επιτρέπει να ψάξουµε αναδροµικά (recursively) σε όλα τα υποαρχεία. % grep -r "int main" lab? lab1/hello.c:int main () { % cd lab1 % grep int *.c hello.c:int main () { test.c:double num_pints; find = Πού είναι αυτό το αρχείο? Αυτή η εντολή χρησιµοποιείται για την εύρεση αρχείων. Είναι πολύ ισχυρή γιατί επιτρέπει στο χρήστη να εφαρµόσει και άλλες εντολές στα αρχεία που βρίσκει η find. Εδώ θα κάνουµε ένα απλό παράδειγµα µόνο. 9
% cd % find. -name "hello.c" -print./ce120/lab1/hello.c Στο παραπάνω παράδειγµα η find ψάχνει στον τρέχοντα φάκελο και όλους τους υποφακέλους του να βρεί ένα αρχείο µε όνοµα hello.c και τυπώνει τα αποτελέσµατα. Βοήθεια Αν δε θυµάστε πως ακριβώς δουλεύει µια εντολή µπορείτε να βρείτε τη σελίδα της στο εγχειρίδιο (manual) χρησιµοποιώντας την εντολή man. Για παράδειγµα, man rm θα σας δώσει πληροφορίες για τη χρήση και όλες τις διαθέσιµες επιλογές της εντολής rm. Όταν είστε µέσα στο περιβάλλον της εντολής man πατείστε spacebar για να προχωρήσετε στην επόµενη σελίδα, b για να πάτε στην προηγούµενη σελίδα και q για να βγείτε. 10
ΤΟ ΠΡΩΤΟ ΠΡΟΓΡΑΜΜΑ C: Hello world! Γράφοντας το πρόγραµµα Μπείτε στο λογαριασµό σας και φτιάξτε ένα φάκελο µέσα στον οποίο θα γράφετε όλα τα προγράµµατα για το εργαστήριο. Μπορείτε να τον ονοµάσετε ce120 ή prog1 ή κάποιο άλλο αντιπροσωπευτικό όνοµα. Μέσα σε αυτό το φάκελο φτιάξτε ένα νέο φάκελλο, µε όνοµα lab0 γι'αυτό το πρώτο εργαστήριο. Μέσα σε αυτόν, φτιάξτε ένα τελευταίο φάκελο µε βάση το όνοµά σας. Για την ακρίβεια, το όνοµα του φακέλου πρέπει να είναι (µε λατινικούς χαρακτήρες) : επώνυµο_όνοµα_aem_email Για παράδειγµα, doufexi_vana_000_doufexi@gmail.com Ανοίξτε τον επεξεργαστή κειµένου Kate (όταν συνηθίσετε το Linux πειραµατιστείτε και µε άλλους επεξεργαστές κειµένου όπως vi και emacs). Γράψτε στο Kate το παρακάτω πρόγραµµα το οποίο εκτυπώνει στην οθόνη το µήνυµα Hello world! Σώστε το αρχείο µε όνοµα lab0.c µέσα στο φάκελο επώνυµο_όνοµα_aem_email. Παρατηρείστε ότι στην κάτω µπάρα του Kate βρίσκεται ένα tab που γράφει Terminal. Αν το πατήσετε θα ανοίξει ένα τερµατικό µέσα στο περιβάλλον του Kate. Βεβαιωθείτε ότι βρίσκεται στο σωστό φάκελο. Αν δε βρίσκεται, χρησιµοποιείστε την εντολή cd για να µεταφερθείτε εκεί. Τώρα είστε έτοιµοι να κάνετε compile το πρόγραµµά σας. Αν δεν υπάρχουν λάθη, ο compiler θα παράγει ένα εκτελέσιµο πρόγραµµα. 11
Compilation (µεταγλώττιση) και εκτέλεση Ο compiler που θα χρησιµοποιήσετε είναι το gcc. Όπως οι περισσότερες εντολές που δοκιµάσατε στο προηγούµενο κεφάλαιο, το gcc έχει αρκετές επιλογές (κάντε man gcc για να πάρετε µια ιδέα). Αυτές που πρέπει να χρησιµοποιείτε στον Προγραµµατισµό Ι είναι: -Wall : τυπώνει όλες τις δυνατές προειδοποιήσεις. Παρόλο όταν υπάρχουν µόνο προειδοποιήσεις κατά το compilation µπορεί να δηµιουργηθεί εκτελέσιµο, συχνά οι προειδοποιήσεις δίνουν υποδείξεις που βοηθούν στην αποφυγή λογικών λαθών. Πρέπει πάντα να χρησιµοποιείτε -Wall. -g : παράγει πληροφορίες για τον debugger. O debugger είναι ένα εργαλείο που βοηθά στην εύρεση λογικών λαθών. Θα µιλήσουµε περισσότερο γι αυτό σε επόµενο εργαστήριο. -ο : η επιλογή αυτή, ακολουθούµενη από ένα όνοµα αρχείου λέει στον compiler να ονοµάσει το εκτελέσιµο σύµφωνα µε το όνοµα που ακολουθεί. Μπορεί να παραληφθεί, στην οποία περίπτωση το εκτελέσιµο παίρνει το όνοµα a.out Για να κάνετε compile το hello_world.c γράφετε gcc -g -Wall hello_world.c -o hello_world ΠΡΟΣΟΧΗ: Αν γράψετε -o hello_world.c κατα λάθος, τη βάψατε... Το εκτελέσιµο θα γραφτεί πάνω στο hello_world.c και θα χάσετε τον κώδικά σας. Αν όλα πήγαν καλά, πρέπει τώρα να έχετε ή ένα a.out ή ένα hello_world στο φακελό σας. Για να το εκτελέσετε, γράψτε./hello_world Συγχαρητήρια, έχετε το πρώτο σας πρόγραµµα! Για να στείλετε το πρόγραµµά σας για βαθµολόγηση, πηγαίνετε στο φάκελο lab0, και γράψτε την εντολή tar czvf επώνυµο_όνοµα_αεμ_email.tgz επώνυµο_όνοµα_αεμ_email Αν όλα έχουν πάει καλά, θα δηµιουργηθεί το αρχείο επώνυµο_όνοµα_αεμ_email.tgz Στείλτε ένα email στη διεύθυνση ce120lab@gmail.com, µε τίτλο CE120 lab0 tmima X (όπου Χ είναι το τµήµα σας) και συνηµµένο (attached) το αρχείο επώνυµο_όνοµα_αεμ_email.tgz 12