Cách khắc phục 'không thể thực thi tệp nhị phân: lỗi định dạng Exec' trên Ubuntu
Mặc dù không nên xảy ra khi sử dụng kho lưu trữ apt-get chính thức, nếu bạn tải phần mềm xuống Internet và chạy nó thì có khả năng bạn sẽ thấy bash đáng sợ : ./nameOfProgram: không thể thực thi tệp nhị phân: lỗi định dạng Exec . Lỗi này, thường được theo sau bởi bash: ./nameOfProgram.sh: Quyền bị từ chối hoặc một cái gì đó tương tự, cho biết rằng Ubuntu không thể giao tiếp chính xác với tệp nhị phân bạn đã tải xuống. Điều này là bởi vì trong khi nó dường như là một nhị phân Linux hợp lệ, nó được thiết kế cho một chipset khác với hạt nhân hiện đang hỗ trợ của bạn.
Hầu hết mọi người sử dụng Ubuntu đều sử dụng bộ vi xử lý 32 bit hoặc 64 bit dựa trên kiến trúc chuẩn mà Intel phát hành, bất kể ai thực sự tạo ra vi mạch của họ. Điều quan trọng cần nhớ là bộ vi xử lý 64 bit có thể chạy ở chế độ 32 bit, vì vậy nếu bạn gặp lỗi này mặc dù bạn có bộ xử lý 64 bit thì có khả năng bạn đang chạy phiên bản Ubuntu 32 bit. Một vài lệnh đơn giản là tất cả những gì cần thiết để cho biết chip của bạn đang hoạt động như thế nào.
Phương pháp 1: Sử dụng lệnh vòm
Nếu bạn không quen thuộc với loại bộ vi xử lý mà bạn đã cài đặt trên máy của bạn, thì trước tiên bạn sẽ muốn sử dụng lệnh arch từ dòng lệnh. Bạn sẽ chỉ thấy một dòng đầu ra được trả lại cho bạn sau khi chạy lệnh này. Trong nhiều trường hợp, bạn sẽ thấy i686, có nghĩa là bạn đang sử dụng bộ xử lý 32 bit và do đó không thể chạy x86_64 nhị phân. Thay vào đó, nếu bạn nhìn thấy amd64 hoặc một cái gì đó tương tự, thì bạn đang sử dụng bộ vi xử lý x86_64 và ít nhất về lý thuyết có thể chạy hầu hết các tệp nhị phân 32 bit và 64 bit. Không giống như Microsoft Windows, Ubuntu Linux thực sự chứa các công cụ thích hợp để cho phép người dùng các chipset 644 bit chạy các chương trình Windows 16 bit trong hệ điều hành của họ trong nhiều trường hợp.
Những điều khoản này vẫn đúng ngay cả khi bạn không thực sự sử dụng mô hình cụ thể của vi mạch. Ví dụ, i686 là cách Linux đề cập đến nhiều bộ vi xử lý 32 bit ngay cả khi chúng không thực sự là chip Intel 80686. Ngay cả khi bạn đang sử dụng công nghệ Intel 64 bit, vòm vẫn có thể gọi bộ vi xử lý của bạn là chip amd64. Điều này không chỉ ra lỗi và có thể được bỏ qua một cách an toàn. Bạn có thể sử dụng cat / proc / cpuinfo hoặc nhiều hơn / proc / cpuinfo để tìm ra loại bộ xử lý chính xác mà bạn đang sử dụng. Vì các dòng trong tệp này dài, bạn có thể muốn đẩy F11 trước khi phát hành nó nếu bạn đang sử dụng một cửa sổ đầu cuối đồ họa. Người dùng của một giao diện điều khiển ảo, đặc biệt là những người làm việc với máy chủ Ubuntu, sẽ không phải lo lắng nhiều như vậy.
Bạn có thể thấy một số loại đầu ra khác, điều này có thể hạn chế hơn nữa các tùy chọn của bạn khi nói đến phần mềm đang chạy. Ubuntu hỗ trợ kiến trúc PowerPC trong thời gian dài nhất, được tìm thấy trong một số máy trạm cũng như nhiều máy Macintosh cổ điển và các máy Macintosh OS X cũ hơn. Bạn thực sự vẫn có thể tìm thấy kho lưu trữ Ubuntu cho những kiến trúc này, mặc dù họ nhận được rất ít sự hỗ trợ ngày hôm nay. Tuy nhiên, bạn có nhiều khả năng sẽ không thể chạy nhiều tệp nhị phân Linux mà bạn tải xuống từ Internet bên ngoài kho lưu trữ chính thức trong trường hợp này. Điều đó không có nghĩa là Ubuntu không hoạt động trên các máy này, mặc dù bạn có thể muốn xem xét bản phân phối Lubuntu nhẹ hơn.
Mẹo CHUYÊN NGHIỆP: Nếu vấn đề xảy ra với máy tính của bạn hoặc máy tính xách tay / máy tính xách tay, bạn nên thử sử dụng phần mềm Reimage Plus có thể quét các kho lưu trữ và thay thế các tệp bị hỏng và bị thiếu. Điều này làm việc trong hầu hết các trường hợp, nơi vấn đề được bắt nguồn do một tham nhũng hệ thống. Bạn có thể tải xuống Reimage Plus bằng cách nhấp vào đâyCách 2: Sử dụng tập lệnh
Lệnh tệp xác định các tệp khác nhau chứa gì và thường rất chính xác. Thử xác định tệp đang được đề cập bằng cách nhập tên tệpOfProgram để xem bạn có nhận được đầu ra 32-bit hoặc ELF ELF 32 bit hay không. Nếu nó cho bạn biết rằng đó là mã nhị phân 64 bit ELF và bạn nhận được i686 làm đầu ra từ lệnh vòm, thì không có cách nào bạn có thể chạy nó một cách hợp lý trên máy của mình. Nếu bạn đang sử dụng bộ vi xử lý 64 bit chạy Ubuntu 32 bit, thì bạn có thể cài đặt lại hệ điều hành, mặc dù đây là một bước cực đoan để chạy một chương trình.
Ngoài ra còn có khả năng rất thực tế, tuy nhiên, nhẹ, thay vào đó bạn có thể đi qua một nhị phân khi bạn cố gắng chạy nó, nhổ ra các ký tự rác cho thiết bị đầu cuối ngay cả khi bạn đã quét phần mềm độc hại trên thiết bị đó. Các ký tự này thường có dạng khối hình thoi hoặc hình chữ nhật xen kẽ có giá trị số trong chúng. Một số nhà khoa học máy tính gọi đậu phụ sau này, và đại diện cho các giá trị Unicode của các ký tự mà các kiểu chữ hiện đang được cài đặt của bạn sẽ không thể hiển thị. Nếu thiết bị đầu cuối hiển thị chúng như thế này, thì bạn có thể yên tâm rằng đây không phải là lỗi phông chữ hay bất kỳ điều gì liên quan đến phần mềm độc hại. Thay vào đó, điều này đơn giản chỉ vì bộ mã hóa bộ vi xử lý được biên dịch bên trong của hệ nhị phân rất xa lạ với hệ thống của bạn mà nó không biết cách giải thích một số mã.
Cách tốt nhất để khắc phục điều này là cài đặt gói thích hợp cho kiến trúc của bạn. Nếu bạn đang cài đặt các gói từ bên trong Ubuntu, thì hệ thống apt-get hoặc trình quản lý Synaptic đồ họa đã được bạn bảo vệ mà không gặp bất kỳ vấn đề gì. Nếu bạn đang tải xuống các gói từ một bản phân phối khác, thì bạn sẽ cần tìm một gói phù hợp với kiến trúc của mình. Lấy ví dụ, danh sách gói gvim của Arch Linux. Mặc dù gói mặc định có kiến trúc x86_64, nhưng cũng có một cho chipset i686. Điều này sẽ hoạt động trên các máy 32 bit hoạt động với cấu trúc ngắt của Intel, nhưng hãy nhớ rằng các điều khoản i686 và 32-bit không bao gồm lẫn nhau mọi lúc vì các chipset khác mà Linux hỗ trợ thực sự có tính năng triển khai 32 bit của riêng chúng.
Người dùng khám phá toàn bộ khung cảnh GNU / Linux có thể gặp phải các tệp nhị phân được biên dịch cho các công nghệ kỳ lạ hơn nhiều so với những cảnh này. Linux thực sự là một cảnh mã nền tảng, vì vậy bạn sẽ thấy OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha và nhiều nhị phân chuẩn khác được biên dịch để làm việc. Nhiều khả năng, bạn sẽ không thể chạy bất kỳ trong số này, mặc dù ARM là một nền tảng máy tính bảng và điện thoại thông minh cực kỳ phổ biến. Nó cũng là nền tảng mà Raspberry Pi dựa trên, có nghĩa là nếu bạn đang thực sự chạy Ubuntu trên một thiết bị di động hoặc phân phối Ubuntu MATE cho Raspberry Pi, bạn sẽ thực sự cần những thay vì Intel 32-bit hoặc x86_64 nhị phân.
Mẹo CHUYÊN NGHIỆP: Nếu vấn đề xảy ra với máy tính của bạn hoặc máy tính xách tay / máy tính xách tay, bạn nên thử sử dụng phần mềm Reimage Plus có thể quét các kho lưu trữ và thay thế các tệp bị hỏng và bị thiếu. Điều này làm việc trong hầu hết các trường hợp, nơi vấn đề được bắt nguồn do một tham nhũng hệ thống. Bạn có thể tải xuống Reimage Plus bằng cách nhấp vào đây