32 bit Ubuntu sisteminde 64 bit uygulama çalıştırın


10

Gördüğüm tüm sorular, 64 bit bir sistemde 32 bit bir uygulamanın çalıştırılmasıyla ilgilidir.

32-bit Ubuntu 12.04 (aslında buna dayanan temel OS Luna) çalıştırıyorum ve açık reddeden 64-bit bir uygulamayı çalıştırmaya çalışıyorum. Koşu:

./64bit_app.run

( 64bit_app.runçalıştırmaya çalıştığım 64 bit uygulama nerede ) ile sonuçlanır:

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

" çalıştırılamıyor / çalıştırılamıyor / ikili dosya açılamıyor ".

Çalıştırabilir miyim? 32 bit sistemde 64 bit uygulama çalıştırmak mümkün müdür? Öyleyse nasıl?


Ben var değil bu denenmiş ama çözümler gösterilen teşebbüs var burada esoecially cevap açıklayan dpkg --add-architecture? Gibi bildiğim kadarıyla, aynı yaklaşım 64 üzerinde 32 için çalışmak ve 64 için 32. Sadece değişikliği gerektiğini dpkg --add-architecture i386etmek dpkg --add-architecture amd64.
terdon

1
Eğer bunu doğru, 64-bit donanım var mı? (sadece emin olmak için)
Mart'ta strugee

"hangisi açmayı reddediyor?" tam olarak nasıl?
Braiam

1
Ben sorusuna cevap okuyunuz bağlantılı , çalıştırmak için gereken sudo dpkg --add-architecture amd64ilk. Bu ayrı bir komut.
terdon

1
@terdon üzgünüm, bunu anlamadım. Söz konusu satır sonuçları Running: dpkg: error: opción --add-architecture desconocidanereye desconocidaçevirir unknown.
Gabriel

Yanıtlar:


8

32bit çekirdeği ile x86_64 üzerinde doğrudan Linux üzerinde yapamazsınız. 64bit kodunu çalıştırabilmek için 64bit çekirdeğe ihtiyacınız vardır. (Not: kernel. 64bit çekirdek üzerinde 32bit kullanıcı arazisi çalıştırabilir ve 64bit ikili dosyalar için destek yükleyebilirsiniz. Bunun ne kadar kolay olduğu dağıtımlara bağlıdır. Debian için burada örnek .)

Bazı sanallaştırma yazılımları bunu yapabilir (kullandığınız CPU türüyle ilgili kısıtlamalarla) ve emülatörler de bunu yapabilir. Ancak yerel olarak çalıştırmak için 64bit çekirdeğe ihtiyacınız olacak.

Çoğu 64bit dağıtımının 32bit desteği (varsayılan veya yüklenebilir) olduğundan, aynı işletim sisteminde hem 64bit hem de 32bit ikili dosyaları çalıştırmanız gerekiyorsa kullanmanız gerekir.


7

Mat'ın cevabını genişletme:

Evet, bazı sanallaştırma yazılımları bunu yapabilir. Ele alınması gereken başlıca engel, 32 bit bir ortamda CPU'nun 64 bit özelliklerinin mevcut olmaması ve ayrıca 64 bit çekirdeğin özelliklerinin mevcut olmamasıdır. CPU'nuz 64 bit desteğe sahipse bile öyle (2003'ten beri hepsi var).

Sorunuz dolaylı olarak 64 bit uygulamayı kendi sistem ortamınızda çalıştırmak istediğinizi belirtiyor. Gerçekten niyetiniz buysa, tüm sanal makine tabanlı çözümleri içermez. Benim için bilinen tek şey qemu'nun çekirdek emülasyonudur. Yani:

qemu-x86_64 ./your_64bit_app

Uygulamanızı geçerli sisteminizde, geçerli çekirdeğinizle, geçerli ortam değişkenlerinizle çalıştırır . Tabii ki çok hızlı değil, cpu'nuzu taklit etmek zorunda.

Yalnızca linux x86-64 uygulamalarını taklit edebilir.


Bir yerde de okudum, sanki vmware bunu yapabilirdi, ama bu bir cevap için yeterli bilgi değil. Afaik'in yeni vmware'i yalnızca host tarafında 64bit'tir.
peterh - Monica'yı

1

64-bit mimarilerin çoğu 32-bit mimarilerin uzantılarıdır. Daha yeni ve tamamen farklılar, bu yüzden 32 bit mimarinin 64 bit muadili hakkında hiçbir fikri yok. Yeni özelliklerin ne olduğunu, yeni kayıtların ne olduğunu bilmiyorlar ... Bilseler bile yeni kayıtlara ve özelliklere erişimleri yoktur. Sonuç olarak, 32 bit çekirdek 64 bit bağlamları kaydedemez. Tüm bunlar, 32 bit sistemde 64 bit uygulamaların çalıştırılmasını imkansız hale getirir.

Dikkatli bir şekilde hazırlanmış 64-bit farkında 32-bit çekirdek 64-bit uygulamaları çalıştırabilir, ancak bağlam tasarruflarını yapmak için yine de 64-bit koda ihtiyaç duyar, bu da onu artık 32-bit çekirdek haline getirmez.

Bir öykünücünün içinde 64 bit işletim sistemi veya VT-x ile 32 bit ana bilgisayarda 64 bit konuk sanal makine çalıştırabilirsiniz. Ancak teknik olarak farklı bir 64 bit sistemde çalışıyorsunuz. 64 bit kodu doğrudan 32 bit Linux çekirdeğinde çalıştırmak hala mümkün değildir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.