Οδηγοί

Τρόπος διόρθωσης «δεν είναι δυνατή η εκτέλεση δυαδικού αρχείου: Σφάλμα μορφής Exec» στο Ubuntu

Παρόλο που δεν θα πρέπει να συμβεί όταν χρησιμοποιείτε τα επίσημα αποθετήρια apt-get, εάν κάνετε λήψη λογισμικού από το Διαδίκτυο και το εκτελέσετε, τότε υπάρχει πιθανότητα να δείτε το φόβο bash: ./nameOfProgram: δεν είναι δυνατή η εκτέλεση δυαδικού αρχείου: Σφάλμα μορφής Exec. Αυτό το σφάλμα, το οποίο ακολουθείται συνήθως από bash: ./nameOfProgram.sh: Δεν επιτρέπεται η άδεια ή κάτι σαν αυτό, δείχνει ότι το Ubuntu δεν μπόρεσε να συνδεθεί σωστά με το δυαδικό αρχείο που κατεβάσατε. Αυτό συμβαίνει επειδή, ενώ είναι προφανώς ένα έγκυρο δυαδικό Linux, έχει σχεδιαστεί για διαφορετικό chipset από αυτό που υποστηρίζει ο πυρήνας σας.

Τα περισσότερα άτομα που χρησιμοποιούν το Ubuntu χρησιμοποιούν επεξεργαστές 32-bit ή 64-bit που βασίζονται σε μια τυπική αρχιτεκτονική που κυκλοφόρησε η Intel, ανεξάρτητα από το ποιος έκανε τα μικροτσίπ τους. Είναι σημαντικό να θυμάστε ότι οι επεξεργαστές 64-bit μπορούν να εκτελεστούν σε λειτουργία 32-bit, οπότε εάν λαμβάνετε αυτό το σφάλμα, παρόλο που έχετε επεξεργαστή 64-bit, υπάρχει πιθανότητα να εκτελέσετε μια έκδοση 32-bit του Ubuntu. Μερικές απλές εντολές χρειάζονται για να πούμε πώς λειτουργεί το τσιπ σας.

Μέθοδος 1: Χρήση της εντολής Arch

Εάν δεν είστε εξοικειωμένοι με τον τύπο μικροεπεξεργαστή που έχετε εγκαταστήσει στο μηχάνημά σας, τότε θα θελήσετε πρώτα να χρησιμοποιήσετε την εντολή arch από τη γραμμή εντολών. Θα δείτε μόνο μία γραμμή εξόδου να επιστρέφεται μετά την εκτέλεση αυτής της εντολής. Σε πολλές περιπτώσεις, θα δείτε το i686, που σημαίνει ότι χρησιμοποιείτε επεξεργαστή 32-bit και επομένως δεν μπορείτε να εκτελέσετε δυαδικά αρχεία x86_64. Αν, αντίθετα, δείτε το amd64 ή κάτι παρόμοιο, τότε χρησιμοποιείτε επεξεργαστή x86_64 και τουλάχιστον θεωρητικά θα μπορείτε να εκτελέσετε τα περισσότερα δυαδικά αρχεία 32-bit και 64-bit. Σε αντίθεση με τα Microsoft Windows, το Ubuntu Linux περιέχει πραγματικά τα κατάλληλα εργαλεία που επιτρέπουν στους χρήστες των chipset 644-bit να εκτελούν προγράμματα Windows 16-bit στο λειτουργικό τους σύστημα και σε πολλές περιπτώσεις.

Αυτοί οι όροι εξακολουθούν να ισχύουν ακόμη και αν δεν χρησιμοποιείτε το συγκεκριμένο μοντέλο μικροτσίπ. Για παράδειγμα, το i686 είναι ο τρόπος με τον οποίο το Linux αναφέρεται σε πολλούς επεξεργαστές 32-bit, ακόμα κι αν δεν είναι στην πραγματικότητα Intel 80686 chip. Ακόμα κι αν χρησιμοποιείτε τεχνολογία Intel 64-bit, η αψίδα ενδέχεται να εξακολουθεί να ονομάζει τον επεξεργαστή σας τσιπ AMD64. Αυτό δεν υποδηλώνει σφάλμα και μπορεί να αγνοηθεί με ασφάλεια. Μπορείτε να χρησιμοποιήσετε τη γάτα / proc / cpuinfo ή περισσότερο / proc / cpuinfo για να μάθετε τον ακριβή τύπο επεξεργαστή που χρησιμοποιείτε. Δεδομένου ότι οι γραμμές σε αυτό το αρχείο είναι μεγάλες, ίσως θελήσετε να πιέσετε το F11 πριν το εκδώσετε, εάν χρησιμοποιείτε ένα παράθυρο τερματικού γραφικών. Οι χρήστες μιας εικονικής κονσόλας, ειδικά εκείνοι που εργάζονται με διακομιστή Ubuntu, δεν θα πρέπει να ανησυχούν τόσο πολύ.

Ενδέχεται να δείτε κάποιους άλλους τύπους εξόδου, οι οποίοι ενδέχεται να περιορίσουν περαιτέρω τις επιλογές σας όσον αφορά την εκτέλεση λογισμικού. Το Ubuntu υποστήριξε την αρχιτεκτονική PowerPC για το μεγαλύτερο χρονικό διάστημα, η οποία βρίσκεται σε ορισμένους σταθμούς εργασίας, καθώς και σε πολλά κλασικά μηχανήματα Macintosh και παλαιότερα OS X Macintosh. Μπορείτε ακόμα να βρείτε αποθετήρια Ubuntu για αυτές τις αρχιτεκτονικές, αν και λαμβάνουν λίγη υποστήριξη σήμερα. Ωστόσο, κατά πάσα πιθανότητα δεν θα μπορείτε να εκτελέσετε πολλά δυαδικά αρχεία Linux που κατεβάζετε από το Διαδίκτυο εκτός των επίσημων αποθετηρίων σε αυτήν την περίπτωση. Αυτό δεν σημαίνει ότι το Ubuntu δεν λειτουργεί σε αυτά τα μηχανήματα, αν και ίσως θέλετε να δείτε την ελαφρύτερη διανομή Lubuntu.

Μέθοδος 2: Χρήση του αρχείου Command

Η εντολή αρχείου προσδιορίζει ποια διαφορετικά αρχεία περιέχουν και είναι συνήθως πολύ ακριβή. Δοκιμάστε να προσδιορίσετε το εν λόγω αρχείο πληκτρολογώντας το αρχείο nameOfProgram για να δείτε εάν λαμβάνετε ELF 32-bit ή ELF 64-bit ως έξοδο. Εάν σας πει ότι είναι δυαδικό ELF 64-bit και λάβατε το i686 ως έξοδο από την εντολή arch, τότε δεν υπάρχει τρόπος να το εκτελέσετε εύλογα στο μηχάνημά σας. Εάν χρησιμοποιείτε μικροεπεξεργαστή 64-bit που εκτελεί Ubuntu 32-bit, τότε θα μπορούσατε τεχνικά να επανεγκαταστήσετε το λειτουργικό σύστημα, αν και αυτό είναι λίγο ακραίο βήμα για να εκτελέσετε ένα μόνο πρόγραμμα.

Υπάρχει επίσης η πολύ πραγματική πιθανότητα, όσο μικρή, να συναντήσετε ένα δυαδικό σύστημα που, όταν προσπαθείτε να το εκτελέσετε, εκπέμπει ανεπιθύμητους χαρακτήρες στο τερματικό, ακόμα κι αν έχετε εκτελέσει σάρωση κακόβουλου λογισμικού. Αυτοί οι χαρακτήρες έχουν συνήθως τη μορφή μπλοκ σχήματος παστίλιας ή εναλλακτικά ορθογώνιων κύβων που έχουν αριθμητικές τιμές σε αυτά. Ορισμένοι επιστήμονες υπολογιστών αποκαλούν το τελευταίο τόφου και αντιπροσωπεύουν τις τιμές Unicode των χαρακτήρων που δεν θα μπορούν να εμφανιστούν οι γραμματοσειρές που έχετε εγκαταστήσει. Εάν το τερματικό τους εμφανίζει έτσι, τότε μπορείτε να είστε σίγουροι ότι αυτό δεν είναι ούτε σφάλμα γραμματοσειράς ούτε κάτι που σχετίζεται με κακόβουλο λογισμικό. Αντίθετα, αυτό συμβαίνει μόνο επειδή ο μεταγλωττισμένος κώδικας μικροεπεξεργαστή μέσα στο δυαδικό είναι τόσο ξένος προς το σύστημά σας που δεν ξέρει πώς να ερμηνεύει κάποιο από τον κώδικα.

Ο καλύτερος τρόπος για να το διορθώσετε είναι να εγκαταστήσετε το κατάλληλο πακέτο για την αρχιτεκτονική σας. Εάν εγκαθιστάτε πακέτα από το εσωτερικό του Ubuntu, τότε το σύστημα apt-get ή ο γραφικός διαχειριστής Synaptic σας έχει καλύψει χωρίς προβλήματα. Εάν κάνετε λήψη πακέτων από άλλη διανομή, τότε θα πρέπει να βρείτε το σωστό για την αρχιτεκτονική σας. Πάρτε, για παράδειγμα, την καταχώριση του πακέτου gvim του Arch Linux. Ενώ το προεπιλεγμένο πακέτο διαθέτει την αρχιτεκτονική x86_64, υπάρχει επίσης ένα για το chipset i686. Αυτό θα λειτουργήσει σε μηχανήματα 32-bit που λειτουργούν με τη δομή διακοπής της Intel, αλλά να θυμάστε ότι οι όροι i686 και 32-bit δεν περιλαμβάνουν αμοιβαία συμπερίληψη, καθώς άλλα chipset που υποστηρίζει το Linux διαθέτουν στην πραγματικότητα τις δικές τους εφαρμογές 32-bit.

Οι χρήστες που εξερευνούν ολόκληρη τη σκηνή GNU / Linux ενδέχεται να συναντήσουν δυαδικά αρχεία που έχουν συγκεντρωθεί για πολύ πιο εξωτικές τεχνολογίες από αυτές. Το Linux είναι πραγματικά μια σκηνή κώδικα πολλαπλών πλατφορμών, οπότε θα δείτε OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha και πολλά άλλα τυποποιημένα δυαδικά πρότυπα. Πιθανότατα, δεν θα μπορείτε να εκτελέσετε κανένα από αυτά, αν και το ARM είναι μια εξαιρετικά δημοφιλής πλατφόρμα tablet και smartphone. Είναι επίσης η πλατφόρμα στην οποία βασίζεται το Raspberry Pi, πράγμα που σημαίνει ότι εάν χρησιμοποιείτε πραγματικά το Ubuntu σε μια κινητή συσκευή ή τη διανομή Ubuntu MATE για το Raspberry Pi, θα τα χρειαστείτε πραγματικά αντί για τα δυαδικά αρχεία Intel 32-bit ή x86_64.

$config[zx-auto] not found$config[zx-overlay] not found