Προς το περιεχόμενο

χαζή (?) ερώτηση για εκτελέσιμο αρχείο


^BOOMBOOM

Προτεινόμενες αναρτήσεις

Δημοσ.

Προσπαθώ να τρέξω κάποια προγράμματα fortran σε Linux και αντιμετωπίσω το εξής πρόβλημα:

 

Φτιάχνω ενα αρχείο code.f , κάνω compile με εντολή πχ:

 

f77 code.exe code.f

 

ή f77 code.f

 

και δημιουργείται ενα αρχείο a.out (ή code.exe), το οποίο όμως ενω είναι εκτελέσιμο (έχει σωστά permissions) δεν κάνει τίποτα, δοκίμασα στο prompt:

 

a.out

 

και μου βγάζει πως δεν αναγνωρίζει την εντολή αυτή.

 

Το πρόβλημα το έχω σε Suse 10 και σε CentOS, σε παλαιότερη διανομή σε άλλο υπολογιστή που το είχα δοκιμάσει (suse νομίζω) το αρχείο που προέκυτπτε απο το compilation έτρεχε άμεσα.

 

Καμια ιδέα τι φταίει?

Δημοσ.

Και για να εξηγησουμε τι πραγματικα συμβαινει:

Οταν δινεις μια εντολη, το λειτουργικο ψαχνει να βρει ενα εκτελεσιμο με αυτο το ονομα. Τυπικα, ψαχνει σε μερη οπως:

/bin

/usr/bin

/usr/local/bin

κλπ.

Ολα αυτα τα μερη τα ψαχνει επειδη υπαρχουν σε μια μεταβλητη περιβαλλοντος που λεγεται PATH (μονοπατια τα οποια ψαχνει).

Για να δεις που ψαχνει, μπορεις να δεις τα περιεχομενα της PATH εκτελωντας:

echo $PATH

Συνηθως το "./" δε βρισκεται μεσα στο $PATH, αρα το λειτουργικο δεν ψαχνει στο "./" για να βρει εκτελεσιμο, αρα αν του πεις σκετο "a.out" δε θα το βρει.

Για να προσθεσεις μονοπατια στα οποια θελεις να ψαχνει για εκτελεσιμα, πρεπει να αλλαξεις την PATH. Αν θελεις πχ να προσθεσεις το "./" για να μη γραφεις καθε φορα "./a.out", αλλα σκετο "a.out", προσθετεις το "./". Αυτο γινεται σε bash πχ με:

export PATH=$PATH:./

To ":" χωριζει τα arguments. Με το παραπανω λες να προσθεσει το "./" στα ηδη υπαρχοντα μονοπατια που βρισκονται μεσα στην PATH.

Παλι για bash, μπορεις να βαλεις την παραπανω εντολη μεσα στο .bashrc σου ωστε να εκτελειται καθε φορα που ανοιγεις ενα shell. Αλλιως, θα πρεπει να την γραφεις καθε φορα που ανοιγεις ενα shell.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...