360°BlogsVideoBooksAnswersBuzzMapsAgenda
Sign in
phigita.net! Homepage 
Preferences | Thursday, 20 November 2008, 09:52 PST

  
Question
Posted: Tuesday February 22, 2005
Number of answers: 19

ΠΡΟΒΛΗΜΑ στο θέμα compile στα Unix όταν δουλεύω με Visual στο σπίτι

Αντιμετώπισα το εξής πρόβλημα και χρειάζομαι μια λύση αν υπάρχει. Τα προγράμματα μου στο σπίτι τα γράφω στη Visual γιατί είναι πιο ευκολόχρηστη(δική μου άποψη). Όμως αυτή τη φορά είχα πρόβλημα. Όταν τέλειωσα το πρόγραμμα και με τη Visual ήταν όλα τέλια, και έπρεπε να το στείλω μέσω ftp στο Πανεπιστήμιο και να το δοκιμάσω μέσω telnet, παρόλο που μου έκανε compile τα αποτελέσματα που μου έδινε σε πράξεις ήταν όλα -1. Στη Visual είναι μια χαρά. Μίλησα με τον καθηγητή του εργαστηρίου και μου είπε ότι δε μπορώ να κάνω compile στα Unix όταν δουλεύω με τη Visual.

Έχει κάποιος κάποια ιδέα έτσι ώστε να μπορώ να συνεχίσω να δουλεύω στη Visual και να μην έχω προβλήματα στα Unix;

Σημειώνω ότι με συγχώρεσε αλλά από δω και στο εξής να δουλεύω με cygwin.Δε μου αρέσει όμως ο cygwin :(

-- Γεωργία Γεωργίου ~jealous

Reader's Answers

Γεωργία, αν είχαμε λίγες περισσότερες λεπτομέρειες για τον κώδικά σου ίσως να μπορούσαμε να βοηθήσουμε. Σε τι γλώσσα είναι το πρόγραμμα που γράφεις; Μπορείς να μας δώσεις κανένα απόσπασμα κώδικα (email); Πια Visual ακριβώς χρησιμοποιείς;

-- Χρίστος Ευαγγέλου ~christose, February 22, 2005

Επίσης, σε ποιες μηχανές του Πανεπιστημίου προσπαθείς να το τρέξεις; Τρέχουν Linux, AIX ή κάτι άλλο;

Μια σκέψη: ίσως να μην χρησιμοποιείς τους κατάλληλους τύπους δεδομένων. Αν χρησιμοποιείς μεταβλητές για κράτηση ενός χαρακτήρα, βεβαιώσου ότι η μεταβλητές έχουν τύπο int και όχι char. Αυτό επειδή ο τύπος signed char στην ANSI C κρατάει τιμές από -128 μέρχι +127, ενώ οι χαρακτήρες ASCII εμπίπτουν στο εύρος 0-255. Έτσι, αν βάλεις κάτι σε ένα signed char που έχει τιμή >127, τα bits που αντιστοιχούν στον αριθμό ερμηνεύονται ως συμπλήρωμα ως προς 2—και άρα ως αρνητικοί αριθμοί.

Άλλη σκέψη: το άλλο που μπορεί να συμβαίνει, είναι πιθανόν να χρησιμοποιείς κάποιες συναρτήσεις οι οποίες στο λειτουργικό σύστημα του Πανεπιστημίου δεν δουλεύουν με τον ίδιο τρόπο όπως και στην Visual.

Η καλύτερη λύση, Γεωργία, είναι ένα προσεκτικό debugging. Αν το πρόγραμμα σου είναι μικρό, βάλε κάμποσα printf(), για να σε βοηθήσουν να απομονώσεις το τμήμα κώδικα το οποίο παράγει τα λανθασμένα αποτελέσματα. Έπειτα, επανέλαβε την διαδικασία μέσα στο τμήμα αυτό, για να εντοπίσεις την γραμμή με το λάθος. Και όταν βρείς το σημείο όπου προκαλείται το λάθος, θα πρέπει να αναζητήσεις γιατί συμβαίνει.

-- Χρίστος Ευαγγέλου ~christose, February 22, 2005

Χρίστο ευχαριστώ για την ανταπόκριση. Μόλις πάω σπίτι να σου στείλω όλο τον κώδικα γιατί είναι χωρισμένο σε βιβλιοθήκες. Στον κώδικα δεν υπάρχει λάθος απ΄ ότι είπε ο καθηγητής. Για το γιατί γίνετε αυτό δε μου έδωσε μια ικανοποιητική απάντηση. Απλά μου είπε δεν κάνει compile στα Unix όταν δουλεύεις σε Visual. Του είπα αφού το προηγούμενο εξάμηνο ήταν εντάξει και τότε μου είπε ότι ήταν πιο απλά προγράμματα.Δε πιστεύω πως δεν υπάρχει λύση.Η γλώσσα που γράφουμε είναι C!

Όσο για μηχανές τι να σου πω, θα σε γελάσω, εμείς λέμε πάμε στα Unix.

-- Γεωργία Γεωργίου ~jealous, February 22, 2005

Γεωργία, μια παράκληση: επειδή είμαι με dialup, σε παρακαλώ συμπίεσε τον κώδικα. Πες μου σε παρακαλώ και σε ποιές μηχανές ενώνεσαι με telnet, για να προσπαθήσω και εγώ να αναπαράξω το πρόβλημα.

-- Χρίστος Ευαγγέλου ~christose, February 22, 2005

Μια ερώτηση..δεν μπορείς να ενωθείς κατευθείαν με τα UNIX του πανεπιστημίου και να χρησιμοποιείς τον UNIX compiler αντί το Visual; Εγώ ας πούμε στην Αγγλία όπου είμαι αυτό κάνω.Εχω όλα τα files στον υπολογιστή του πανεπιστημίου, ενώνομαι με τελνετ,γράφω τον κώδικα μου και τον κάνω save απευθείας εκεί.Ετσι δεν χρειάζεται να μεταφέρω files απο τη μία μηχανή στην άλλη και επομένως απο το ένα λειτουργικό στο άλλο.Χρειάζεσαι ένα X-Windows client και τίποτε άλλο.Ο cygwin είναι εξομειωτής και εγώ έχω πολύ κακές εμπειρίες με αυτό-εμένα ο καθηγητής μου ας πούμε με προέτρεψε να μην τον χρησιμοποιώ.

Το πρόβλημα πρέπει να έχει σχέση με τα libraries των δύο λειτουργικών αφού όπως λες ο κώδικας δουλεύει μια χαρά στο Visual-δεν πιστεύω να θέλει debugging-αλλά αν έχεις χρόνο είναι καλή ιδέα..

-- Σάββας Σωκράτους ~sideline, February 22, 2005

Χρίστο μου συγνώμη. Τώρα κάθισα στην καρέκλα σπίτι μου. Δεν έχω χρόνο όμως γιατί πρέπει να κάνω κάτι ασκήσεις που θα παραδώσω αύριο. Είχα quiz σήμερα ψηφιακά. Και μάλιστα 5 - 7. Θα στο στείλω αύριο με email μετά τις 4 μάλλον που θα μπω σπίτι. Απολογούμαι αν περίμενες. Τα λέμε αύριο που θα είναι και καθαρό το μυαλό μου.

Πάντως εκτιμώ το ενδιαφέρον σου.

-- Γεωργία Γεωργίου ~jealous, February 22, 2005

Σάββα δε σε αγνοώ. Θα τα πούμε αύριο γιατί δε ξέρω πως θα λειτουργήσω τώρα να κάνω και τις ασκήσεις μου. Πιστεύω ότι είναι μέρες που θα να μου έρθει τίποτα απρόσμενο από υπερκόπωση…

Απολογούμαι και σε σένα. Πάντως κανείς δε μας είπε για κάτι τέτοιο που μου λες. Το μόνο που μπορώ να κάνω είναι να γράφω το κώδικα μου, να το μεταφέρω με ftp και να κάνω compile μέσω telnet,να βλέπω τα λάθη μου, να τα διορθώνω, να το ξαναμεταφέρω κτλ. Εγώ πάντως έτσι δε μπορώ να δουλεύω.

-- Γεωργία Γεωργίου ~jealous, February 22, 2005

Γεωργία, κανένα πρόβλημα. Όποτε μπορέσεις.

-- Χρίστος Ευαγγέλου ~christose, February 22, 2005

Σάββα αυτό που λες θέλει αρκετό bandwidth. Και μια μικρή λεπτομέρια: τα προγράμματα τύπου exceed θεωρούνται X-server (όχι client, και εμένα μου φαινόταν παράξενο στην αρχή).

Μια τελευταία απορία: όταν λέτε ftp και telnet το εννοείτε ή εννοείτε sftp-scp και ssh; Η μη κρυπτογραφημένη αποστολή συνθηματικών δεν καθιστά ευάλωτο το σέρβερ του πανεπιστημίου;

-- Στέλιος Χριστοδούλου ~stelios, February 22, 2005

Η μη κρυπτογραφημένη αποστολή συνθηματικών δεν καθιστά ευάλωτο το σέρβερ του πανεπιστημίου;

Δυστυχώς έχεις δίκαιο. Μιλάμε ftp και telnet με plain text και δόξα να έχει ο Θεός !

-- Χάρης Μιλητός ~harry, February 22, 2005

Ακυρο,ναι, για X-Server μιλώ-με ssh.Να υποθέσω ότι το ΠανΚυπ δεν το υποστηρίζει;

-- Σάββας Σωκράτους ~sideline, February 22, 2005

Παλαιότερα, είχα αντιμετωπίσει και εγώ ένα παρόμοιο πρόβλημα. Βέβαια, στη δική μου περίπτωση ο κώδικας δεν έκανε ούτε καν compile ώστοσο δεν βλάπτει να δοκιμάσεις. Το πρόβλημα ήταν ότι όταν μετάφερα με FTP τον κώδικα μου το transfer mode που χρησιμοποιούσα ήταν binary. Επειδή οι κωδικοποιήσεις του unix και windows για τα linefeed είναι διαφορετικές δημιουργόταν το πρόβλημα. Όταν άλλαξα το transfer mode σε ascii το πρόβλημα λύθηκε.

Ίσως αυτό να είναι άσχετο, αλλά δοκίμασε να αλλάξεις το transfer mode και μπορεί να είσαι τυχερή και να λυθεί το πρόβλημα.

-- Έλενα Γεωργίου ~elenag, February 23, 2005

Έλα, Ελένη μου ευχαριστώ επίσης και εσένα για τη συμβουλή. Το transfer mode είναι το πρώτο πράγμα που αλλάζω πάντα. Άσε να δούμε αν βρει τίποτα ο Χρίστος και αν βρει το πρόβλημα θα σας το πω έτσι για να το θυμάμαι και εγώ. :)

-- Γεωργία Γεωργίου ~jealous, February 23, 2005

Εφόσον μπορείς να συνδεθείς με telnet μάλλον μπορείς να συνδεθείς με XDMCP χωρίς ssh tunneling. Δοκίμασε π.χ να εγκαταστήσεις το xwin32 και να ενωθείς με τον σέρβερ του πανεπιστημίου. Εννοείτε ότι για λόγους ασφαλείας θα ήταν προτιμότερο το ssh tunelling, χρησιμοποιώντας π.χ putty

-- Στέλιος Χριστοδούλου ~stelios, February 23, 2005

Εμ, Γεωργία τα Unix δεν αρχικοποιούν τις μεταβλητές, αλλά η Visual κάμνει τις αρχικοποιήσεις. Έτσι, να αρχικοποιάς όλες τις μεταβλητές σου στην αρχή του προγράμματος. Αυτή είναι μια βασική διαφορά, όχι και τόσο εμφανής.

-- Γεωργία Γεωργίου ~georgia, February 23, 2005

Άκυρες οι προηγούμενες απαντήσεις μου, αφού έχεις Cygwin μπορείς να το χρησιμοποιήσεις για να ενωθείς με το σέρβερ

-- Στέλιος Χριστοδούλου ~stelios, February 24, 2005

ΤΕΛΙΚΑ έπρεπε να κάνω include όλα τα .h που δημιούργησα σε όλα τα αρχεία στα οποία χρησιμοποιούσα συναρτήσεις που βρίσκονταν σε άλλη βιβλιοθήκη .h που δημιούργησα!

Ελπίζω να καταλάβατε τι θέλω να πω.

-- Γεωργία Γεωργίου ~jealous, March 16, 2005

Περίεργο, είχα την εντύπωση ότι το κάναμε αυτό και δεν δούλεψε…

-- Χρίστος Ευαγγέλου ~christose, March 16, 2005

Χρίστο μου μαζί βάλαμε μόνο την math.h ενώ χρησιμοποιούσα και άλλες συναρτήσεις άλλων αρχείων τόσο στη συγκεκριμένη βιβλιοθήκη όσο και σε άλλες. Οπότε έκανα include όλα τα .h αρχεία.

-- Γεωργία Γεωργίου ~jealous, March 16, 2005