Bash: ./filename: ไม่สามารถเรียกใช้ไฟล์ไบนารี่ได้


37

ฉันไม่สามารถรันโค้ดที่คอมไพล์ของ Fortran ได้ใน Ubuntu 11.10 32 บิต

ข้อความแสดงข้อผิดพลาดคือ

bash: ./filename : Cannot execute binary file.

ฉันได้ติดตั้งไลบรารี gcc และ gfortran ด้วยเช่นกัน

ใครช่วยได้บ้าง

$ file um
um: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 

6
โปรดพิมพ์file filenameและรายงานผลลัพธ์
มกราคม

ชื่อไฟล์คือ um.exe และผลลัพธ์คือ bash: ./um ไม่สามารถเรียกใช้ไฟล์ไบนารีได้
user87654

2
ที่ดูเหมือนโปรแกรม Linux ดั้งเดิม ลองใช้ไวน์
Lekensteyn

ไฟล์เรียกทำงานนี้ถูกคอมไพล์โดยใช้ไฟล์ make ซึ่งรวบรวมชุดของรหัส fortran exe นี้ทำในเครื่อง fedora
user87654

1
กรุณาพิมพ์file um.exeหรือfile um(แล้วแต่ชื่อไฟล์ไบนารีของคุณ) อย่างไรก็ตามอาจเป็นไปได้ว่าไบนารีที่สร้างขึ้นนั้นเป็นเพราะเหตุผลเดียวหรือไบนารีของ Windows อื่น ๆ นอกจากนี้หากโปรแกรมเป็นสาธารณะคุณสามารถโพสต์ลิงค์ไปยังแหล่งที่มา หรือเพียงแค่โพสต์ makefile ที่นี่
มกราคม

คำตอบ:


38

อย่างที่คุณเห็นจากผลลัพธ์ของfile umสิ่งที่คุณโพสต์ในความคิดเห็นไบนารีของคุณคือไบนารี 64 บิต

ระบบ 32 บิตไม่สามารถเรียกใช้ไบนารี 64 บิตได้ แต่จะทำงานในลักษณะอื่น


3
นี่คือสาเหตุที่พบบ่อยที่สุดที่ฉันเคยเห็นสำหรับปัญหานี้การใช้fileจะระบุได้ค่อนข้างเร็ว
mikebabcock

ดังนั้นจึงไม่มีวิธีแก้ปัญหานี้?
JohnMerlino

@JohnMerlino มีชุดคำสั่งที่ถูกต้องและระบบปฏิบัติการที่เปิดใช้งาน (ฮาร์ดแวร์และระบบปฏิบัติการ AMD64 สำหรับโปรแกรม AMD64) หรือจำลอง / จำลอง / จำลองเสมือนมัน (Virtual Box / JVM / ... ) หรือรับรุ่นสำหรับชุดคำสั่งของคุณ คุณไม่สามารถเรียกใช้ซอฟต์แวร์สำหรับชุดคำสั่งอื่นเป็นโปรแกรมดั้งเดิมได้
12431234123412341234123

3

ลองสร้างไฟล์ที่เรียกใช้งานได้

chmod +x um.exe

จากนั้นลองเรียกใช้

./um.exe

แต่ถ้านี่เป็นไฟล์ exe ที่คอมไพล์แล้วสำหรับ Windows คุณอาจต้องติดตั้ง Wine


3

วิธีแก้ไขปัญหาอื่นสำหรับผู้ที่มีปัญหานี้ยกเว้นส่วนที่เกี่ยวกับบิตที่ไม่ตรงกันคือการเรียกใช้ไฟล์โดยไม่มีคำสั่ง "bash"

เพียงใช้chmod +x 'path to the file'แล้วรัน'the path to the file'ในเทอร์มินัลนี่คือวิธีที่ฉันแก้ไขปัญหาของฉัน


0

แหล่งที่มาที่เป็นไปได้ของข้อผิดพลาดนี้: พยายามเรียกใช้ไบนารีปฏิบัติการ Linux บน Mac หรือในทางกลับกัน

ตัวอย่างเช่นพยายามรันtrueไบนารีจาก Mac ของฉันบนกล่อง Ubuntu ที่ฉัน SCPed ไปที่:

$ ./mactrue 
-bash: ./mactrue: cannot execute binary file: Exec format error

หากคุณดาวน์โหลดไบนารีและดำเนินการล้มเหลวด้วยข้อผิดพลาดนี้ให้ตรวจสอบว่าคุณได้ดาวน์โหลดเวอร์ชั่นสำหรับระบบปฏิบัติการที่ไม่ถูกต้องหรือไม่


0

สำหรับฉันการคัดลอกไบนารีลงในแอปพลิเคชันบน Mac ของฉันจากนั้นลงในเส้นทางของฉันทำให้มันสับสนบน Mac ของฉัน ฉันค่อนข้างแน่ใจว่าโฟลเดอร์ Applications เปลี่ยนไบนารีเป็น Alias ​​แทน binary จริง

-bash: /usr/local/bin/terraform: cannot execute binary file
mike$ file /usr/local/bin/terraform 
/usr/local/bin/terraform: MacOS Alias file

ฉันคลายซิปไบนารี่จากการดาวน์โหลดของฉันอีกครั้งและทำการmvแก้ไขมันไปยังเส้นทางของฉันและมันก็ใช้ได้ดี

mike$ file /usr/local/bin/terraform
/usr/local/bin/terraform: Mach-O 64-bit executable x86_64
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.