Lỗi bash: ./ten_chuong_trinh: cannot execute binary file: Exec format error xuất hiện khi chạy file binary tải từ Internet (không phải từ repo apt). Nguyên nhân: binary được compile cho kiến trúc CPU khác với kernel hiện tại.
Phương Pháp 1: Xác Định Kiến Trúc CPU Bằng arch
arch
Kết quả phổ biến:
i686— 32-bit (x86). Không chạy được binary x86_64 (64-bit).x86_64hoặcamd64— 64-bit. Chạy được cả 32-bit và 64-bit.
Lưu ý: amd64 là tên Linux cho x86_64 (dù CPU Intel). i686 là tên chung cho 32-bit x86.
Xem chi tiết CPU: cat /proc/cpuinfo hoặc more /proc/cpuinfo (nhấn F11 rộng terminal nếu cần).
Kiến trúc khác ít gặp: PowerPC (Mac cũ), ARM (Raspberry Pi, mobile), MIPS, SPARC, Alpha... Ubuntu hỗ trợ một số qua repo chính thức, nhưng binary tải ngoài Internet thường chỉ có x86/x86_64/ARM.
Phương Pháp 2: Kiểm Tra File Bằng file
file ten_chuong_trinh
Kết quả:
ELF 64-bit LSB executable, x86-64→ binary 64-bit.ELF 32-bit LSB executable, Intel 80386→ binary 32-bit.
So sánh với output arch:
| CPU (arch) | Binary 32-bit | Binary 64-bit |
|---|---|---|
| i686 (32-bit) | ✅ Chạy được | ❌ Không chạy được |
| x86_64/amd64 (64-bit) | ✅ Chạy được | ✅ Chạy được |