32 bit bir uygulamayı 64 bit OSX 10.7.2'de nasıl çalıştırabilirim?


15

Ben sadece 32bit sürümü var bir uygulama var. Kullanmak için Mac'i açmadan önce 2& tuşlarına 3basardım, böylece 32 bit modunda çalışacaktı. Ancak, bazı uygulamalar (önceden yüklenmiş 64bit sürüm) her zaman bu modda kilitlenir.

64bit sisteminde 32bit uygulamasını çalıştıran bir çözüm görüyordum:

arch -i386 theApp.app

Ama arch: /Applications/theApp.app isn't executablehatayla denedim . Dosya iznini kontrol ettim ve gösterilebilir drwxrwxr-x, çalıştırılabilir olması gerekiyor, değil mi?
EDIT : @ gd1 dediği gibi, App.app bir klasör (sanırım OSX paket denir) ve bu nedenle yürütülebilir değil.

Ancak yine de bir geçici çözüme ihtiyacım var:
32 bit uygulamamı 64 bit sistemimde nasıl doğru şekilde çalıştırabilirim?


EDIT : Ben archşimdi komut ile uygulamasını açabilirsiniz (teşekkürler @GordonDavisson):

arch -i386 /Applications/theApp.app/Contents/MacOS/theApp

Ancak, uygulama Components losthata ile çalışır , günlük aşağıda gösterilmiştir:

Kjuly@MacBook-Pro:/Applications$ arch -i386 闪讯.app/Contents/MacOS/闪讯 
2012-01-08 16:17:53.381 闪讯[472:1107] isActive: ioctl to kernel socket error 2 ,No such file or directory
2012-01-08 16:17:53.436 闪讯[472:1107] The AppPath = /Applications/闪讯.app
2012-01-08 16:17:53.437 闪讯[472:1107] The src path = /Applications/Èó™ËÆØ.app/xlpppoe.kext
2012-01-08 16:17:58.892 闪讯[472:1107] Set Driver Ok...
/tmp/xlpppoe.kext failed to load - (libkern/kext) requested architecture/executable not found; check the system/kernel logs for errors or try kextutil(8).

BTW, 闪讯.app(Nefret ediyorum !! Ama buna ihtiyacım var ..) Çin'deki üniversitemdeki ağa bağlanmak için kullanılır.


DÜZENLE :

Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/Contents/MacOS/闪讯
/Applications/闪讯.app/Contents/MacOS/闪讯: Mach-O executable i386

ve

Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe
/Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe: Mach-O object i386

Görünüşe göre sadece 32 bit ve 32 bit çekirdeğe bağlı. Çok üzgünüm. :(


@GordonDavisson yardımı ile aldığım bazı bilgiler, belki başka birinin ihtiyacı var.

DOC geçici bazı yöntemler 32 bit çekirdek ile başlama gösterileri üçüncü taraf yazılım veya donanım için daha eski çekirdek uzantılarını kullanma.

Ve hakkındadır "64 bit çekirdek ile Uyumluluk" :

Mac OS X Server v10.5 ile uyumlu bir çekirdek uzantısına dayanan üçüncü taraf yazılımlar (sanallaştırma motoru gibi) veya donanım (PCIe kartı gibi), 64 bit çekirdeği kullanan Mac'lerde çalışmayabilir Mac OS Xv10.6. Mac OS X Server v10.6'da 64 bit çekirdekle çalışan güncelleştirilmiş bir çekirdek uzantısı için yazılım veya donanım satıcısına başvurun.

Geçici bir çözüm olarak, üçüncü taraf yazılımınız veya donanımınız için eski çekirdek uzantılarını kullanmak için geçici olarak 32 bit çekirdeğe başlayabilirsiniz.


OS X'in hangi sürümü?
skub

@skub 10.7.2. :)
Kjuly

1
Ben OSX çok iyi bilmiyorum, ama "arch" bir yürütülebilir bir argüman olarak verilmesini bekliyor ve App.app bir klasör (gördüğünüz gibi önünde 'd' harfi vardır varsayalım izin dizesinin başlangıcı). Yürütülebilir için serach içine o, ben "İçindekiler> MacOS" altında inanmak
gd1

@ gd1 ya, haklısın! Şimdi bunu 32 bit modunda nasıl çalıştıracağımı merak ediyorum. :)
Kjuly

Yanıtlar:


19

OS X'in genel olarak 64/32 bit modu yoktur; başlatıldıklarında tek tek programları "en iyi" gibi görünen modda çalıştırır. Holding 3ve 2bilgisayar önyüklemesi çekirdeğini 32 bit modunda çalıştıracak, ancak bunun programların hangi modda çalıştığıyla ilgisi yok. OS X, programları 64 bit çekirdek veya programlar altında 32 bit modunda mutlu bir şekilde çalıştırabilir. 32 bit çekirdek altında 64 bit modunda.

Programınız yalnızca 32 bit kod içeriyorsa, özel bir şey yapmanıza gerek kalmadan 32 bit modunda çalışır. Bunu fileyürütülebilir dosyada (genellikle AppName.app/Contents/MacOS/AppName'de) çalıştırarak kontrol edebilirsiniz . İşte birkaç örnek:

$ file /Applications/Chess.app/Contents/MacOS/Chess
/Applications/Chess.app/Contents/MacOS/Chess: Mach-O universal binary with 2 architectures
/Applications/Chess.app/Contents/MacOS/Chess (for architecture x86_64): Mach-O 64-bit executable x86_64
/Applications/Chess.app/Contents/MacOS/Chess (for architecture i386):   Mach-O executable i386
$ file /Applications/VLC.app/Contents/MacOS/VLC
/Applications/VLC.app/Contents/MacOS/VLC: Mach-O universal binary with 2 architectures
/Applications/VLC.app/Contents/MacOS/VLC (for architecture i386):   Mach-O executable i386
/Applications/VLC.app/Contents/MacOS/VLC (for architecture ppc):    Mach-O executable ppc
$ file /Applications/Adobe\ Reader\ 9/Adobe\ Reader.app/Contents/MacOS/AdobeReader 
/Applications/Adobe Reader 9/Adobe Reader.app/Contents/MacOS/AdobeReader: Mach-O executable i386

... bu bana Chess.app'ın 32 bit ve 64 bit Intel kodu (sırasıyla "i386" ve "x86_64") içerdiğini söylüyor, VLC.app 32 bit Intel ve 32 bit PowerPC ("ppc") içeriyor Adobe Reader yalnızca 32 bit Intel kodu içerir.

Bu bilgilerin bir kısmını (açık bir ayrıntı olmamakla birlikte) Sistem Bilgisi'nin sistem raporundan (Yazılım -> Uygulamalar bölümünde) de alabilirsiniz.

Bir uygulamanın hem 32 hem de 64 bit kodu varsa, uygulama için Finder'ın Bilgi Al penceresinde hangisinin kullanılacağını seçebilirsiniz ("32 bit modunda aç" onay kutusu olur) veya archçalıştırılabilir komut (örn. arch -i386 /Applications/theApp.app/Contents/MacOS/theApp). Ancak normalde bunu yapmanız gerekmez, işletim sistemi en iyi modu seçmek için iyi bir iş çıkarır.

(Mod seçimini manuel olarak geçersiz kılmanız gereken bir örnek, eklenti veya kitaplık uyumluluğu içindir. 32 ve 64 bitlik bir uygulamanız varsa, ancak yalnızca 32 bitlik bir eklenti veya kitaplık yükleyebilmeniz gerekiyorsa, programı 32 bit modunda çalışmaya zorlamak için.)

32-bit çekirdeğin altında çalışmayan 64-bit programlarınız varsa, ya bir çeşit tuhaf hata var ya da yabancı bir şey var. Belirli ayrıntıları verirseniz, neyin yanlış gittiğini anlayabiliriz.

DÜZENLEME: Uygulama yalnızca 32 bit gibi görünüyor ve yalnızca 32 bit çekirdek uzantısı (kext) yüklüyor. 32 bit uygulama bölümü herhangi bir çekirdek modu altında çalışabilirken, 32 bit çekirdekler yalnızca 32 bit çekirdeğe yüklenebilir (çekirdek için bir eklenti gibidir). Çekirdeği 32 bit modunda tutarak 3ve 2başlangıçta veya komutla kalıcı olarak çalıştırabilirsiniz sudo systemsetup -setkernelbootarchitecture i386(bkz. Apple'ın KB # HT3773 ).

Uygulamayı 32 bit modunda açmak için özel bir şey yapmanız gerekmediğini unutmayın; içerdiği tek biçim bu olduğundan, nasıl başlatılırsa kullanılsın bu modda çalışacaktır (özellikle archkomut gerekli değildir ).

32 bit çekirdek altında düzgün çalışmayan 64 bit uygulamalarınız varsa, bu ayrı bir konudur ve bu konuda başka bir soru göndermenizi tavsiye ederim.


"One instance where you would need to manually override the mode selection is for plugin or library compatibility"Bu, uygulamamı yalnızca 32 bit modunda çalıştırmam gerektiğinde olabilir. Her zaman çökme programı MS Word(şimdi LaTeX kullanıyorum), 32 bit modunun çökmeye neden olup olmadığından emin değilim, sadece kişisel bir tahmin. Ve arch -i386 /Applications/theApp.app/Contents/MacOS/theAppistediğim de bu! O zaman deneyeceğim! Teşekkürler!! : D
Kjuly

Ne yazık ki, Components losthata ile başarısız oldu . :( Günlüğü
Q'uma

1
Yani günlüğü, çekirdek modu demek olduğunu bir çekirdek uzantısı (.kext), yüklemeye çalışıyor gösterir yapar madde (temelde çekirdek eklentisi gibi) ve bit o desteklemediği anlaşılacağı "istenen mimari / bulunamadı yürütülebilir değil" Çekirdeğin çalıştığı modda. İlk file /tmp/xlpppoe.kext/Contents/MacOS/xlpppoeolarak, kext'in hangi modlarda olduğunu (veya bunun yerine /Applications/Èó™ËÆØ.app/xlpppoe.kext içinde olabilir) bulurdum. Yalnızca 32 bit ise, çekirdeği 32 bit modunda başlatmanız gerekir ( buraya bakın ).
Gordon Davisson

Merhaba @ Gordon, bilgiyi soruma koydum. Belki cevabınızın bir parçası olarak son bölümümü kullanabilirsiniz. : p Yine de teşekkürler !!
Kjuly
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.