Chạy ứng dụng 64 bit trên hệ thống Ubuntu 32 bit


10

Tất cả các câu hỏi tôi đã thấy đề cập đến việc chạy ứng dụng 32 bit trong hệ thống 64 bit.

Tôi đang chạy Ubuntu 12.04 32 bit (thực tế là hệ điều hành Luna cơ bản, dựa trên nó) và tôi đang cố chạy một ứng dụng 64 bit từ chối mở. Đang chạy:

./64bit_app.run

( 64bit_app.runứng dụng 64 bit tôi đang cố chạy ở đâu) cho kết quả:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

dịch thành " không thể thực thi / chạy / mở tệp nhị phân ".

Tôi có thể chạy nó không? Có thể chạy ứng dụng 64 bit trong hệ thống 32 bit không? Nếu vậy thì thế nào?


Tôi chưa thử điều này nhưng bạn đã thử các giải pháp được hiển thị ở đây chưa , đặc biệt là câu trả lời giải thích dpkg --add-architecture? Theo tôi biết, cách tiếp cận tương tự sẽ hoạt động cho 32 trên 64 và 64 trên 32. Chỉ cần thay đổi dpkg --add-architecture i386thành dpkg --add-architecture amd64.
terdon

1
bạn làm có phần cứng 64-bit, phải không? (chỉ để đảm bảo)
strugee

"Mà từ chối mở"? Thật là chính xác?
Braiam

1
Xin vui lòng đọc câu trả lời cho câu hỏi tôi liên kết đến , bạn cần chạy sudo dpkg --add-architecture amd64trước. Đó là một lệnh riêng biệt.
terdon

1
@terdon xin lỗi, tôi không hiểu điều đó. Chạy dòng đó kết quả trong: dpkg: error: opción --add-architecture desconocidanơi desconocidadịch sang unknown.
Gabriel

Câu trả lời:


8

Bạn không thể làm điều đó trực tiếp trên Linux trên x86_64 với kernel 32 bit. Bạn cần một hạt nhân 64 bit để có thể chạy mã 64 bit. (Lưu ý: kernel. Bạn có thể có vùng người dùng 32 bit chạy trên kernel 64 bit và cài đặt hỗ trợ cho các nhị phân 64 bit. Việc này dễ dàng như thế nào tùy thuộc vào bản phân phối. Ví dụ ở đây cho Debian.)

Một số phần mềm ảo hóa có thể làm điều đó (với các hạn chế về loại CPU bạn đang sử dụng) và trình giả lập cũng có thể làm điều đó. Nhưng để chạy nó một cách tự nhiên, bạn sẽ cần một hạt nhân 64 bit.

Vì hầu hết các bản phân phối 64 bit có hỗ trợ 32 bit (theo mặc định hoặc có thể cài đặt), đó là những gì bạn nên sử dụng nếu bạn cần chạy cả nhị phân 64 bit và 32 bit trên cùng một hệ điều hành.


7

Mở rộng câu trả lời của @ Mat:

Vâng, một số phần mềm ảo hóa có thể làm điều đó. Trở ngại chính cần xử lý là trong môi trường 32 bit, các tính năng 64 bit của CPU không khả dụng và các tính năng của hạt nhân 64 bit không khả dụng. Thậm chí là như vậy nếu CPU của bạn hỗ trợ 64 bit (kể từ khoảng năm 2003, tất cả chúng đều có).

Câu hỏi của bạn ngầm nói rằng bạn muốn chạy ứng dụng 64 bit trong môi trường hệ thống của riêng bạn. Nếu đó thực sự là ý định của bạn, điều này sẽ loại trừ tất cả các giải pháp dựa trên máy ảo. Phần còn lại duy nhất được biết đến với tôi là mô phỏng hạt nhân của qemu. Vì thế:

qemu-x86_64 ./your_64bit_app

Nó chạy ứng dụng của bạn trên hệ thống hiện tại của bạn, với kernel hiện tại của bạn, với các biến môi trường hiện tại của bạn . Tất nhiên nó không nhanh lắm, nó phải giả lập cpu của bạn.

Nó chỉ có thể mô phỏng các ứng dụng linux x86-64.


Ở đâu đó tôi cũng đã đọc, như thể vmware cũng có thể làm điều đó, nhưng điều này không đủ thông tin chắc chắn cho câu trả lời. Afaik vmware gần đây chỉ có 64 bit ở phía máy chủ.
peterh - Phục hồi Monica

1

Hầu hết các kiến ​​trúc 64 bit là các phần mở rộng cho các cấu trúc 32 bit. Chúng mới hơn và hoàn toàn khác nhau nên rõ ràng kiến ​​trúc 32 bit không biết đối tác 64 bit là gì. Họ không biết các tính năng mới là gì, có những thanh ghi mới nào ... Ngay cả khi họ biết, họ không có quyền truy cập vào các thanh ghi và tính năng mới. Kết quả là hạt nhân 32 bit không thể lưu bối cảnh 64 bit. Tất cả điều đó làm cho việc chạy các ứng dụng 64 bit trên hệ thống 32 bit là không thể.

Một hạt nhân 32 bit 64 bit được chế tạo cẩn thận có thể chạy các ứng dụng 64 bit nhưng nó vẫn cần một số mã 64 bit để thực hiện tiết kiệm ngữ cảnh, khiến nó không còn là hạt nhân 32 bit thuần túy nữa.

Bạn có thể chạy HĐH 64 bit bên trong trình giả lập hoặc máy ảo khách 64 bit bên trong máy chủ 32 bit có VT-x. Nhưng về mặt kỹ thuật, bạn đang chạy trong một hệ thống 64 bit khác. Vẫn không thể chạy mã 64 bit trực tiếp trên nhân Linux 32 bit

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.