Bagaimana saya bisa menjalankan aplikasi 32-bit pada 64-bit OSX 10.7.2?

15

Saya memiliki aplikasi yang hanya ada versi 32bit. Untuk menggunakannya, saya biasa menekan 2& 3bersama-sama sebelum mem-boot Mac, jadi itu akan berjalan dalam mode 32bit. Namun, beberapa aplikasi (versi 64bit yang diinstal sebelumnya) akan selalu macet dalam mode ini ..

Saya kebetulan melihat solusi yang menjalankan aplikasi 32bit dalam sistem 64bit:

arch -i386 theApp.app

Tetapi saya mencoba dengan arch: /Applications/theApp.app isn't executablekesalahan. Saya memeriksa izin file dan itu ditunjukkan drwxrwxr-x, itu harus dapat dieksekusi, eh?
EDIT : Seperti yang dikatakan @ gd1, theApp.app adalah folder (saya pikir bundle di OSX) dan tidak dapat dieksekusi.

Tetapi saya masih membutuhkan solusi:
Bagaimana saya bisa menjalankan aplikasi 32-bit di sistem 64-bit dengan benar?


EDIT : Saya dapat membuka aplikasi dengan archsekarang dengan perintah (terima kasih @GordonDavisson):

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

Namun, aplikasi dijalankan dengan Components lostkesalahan, log ditunjukkan di bawah ini:

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(Aku benci itu !! Tapi aku butuh itu ..) digunakan untuk terhubung ke jaringan di universitas saya di China.


EDIT :

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

dan

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

Tampaknya hanya 32-bit & tergantung pada kernel 32-bit. Oh, aku sangat sedih. :(


Ini beberapa info yang saya dapat dengan bantuan dari @GordonDavisson, mungkin orang lain membutuhkannya.

The DOC menunjukkan beberapa metode untuk sementara memulai dengan kernel 32-bit menggunakan ekstensi kernel yang lebih tua untuk perangkat lunak pihak ketiga atau perangkat keras.

Dan ini tentang "Kompatibilitas dengan kernel 64-bit" :

Perangkat lunak pihak ketiga (seperti mesin virtualisasi) atau perangkat keras (seperti kartu PCIe) yang bergantung pada ekstensi kernel yang kompatibel dengan Mac OS X Server v10.5 mungkin tidak berfungsi pada Mac yang menggunakan kernel 64-bit di Mac OS X v10.6. Hubungi vendor perangkat lunak atau perangkat keras untuk ekstensi kernel yang diperbarui yang bekerja dengan kernel 64-bit di Mac OS X Server v10.6.

Sebagai solusinya, Anda dapat memulai sementara dengan kernel 32-bit untuk menggunakan ekstensi kernel yang lebih lama untuk perangkat lunak atau perangkat keras pihak ketiga Anda.

Kjuly
sumber
Apa versi OS X?
skub
@skub 10.7.2. :)
Kjuly
1
Saya tidak mengenal OSX dengan baik, tapi saya kira "arch" mengharapkan dieksekusi sebagai argumen, dan theApp.app adalah folder (seperti yang Anda lihat, ada huruf 'd' di depan di bagian awal dari string izin). Serach untuk executable di dalamnya, saya percaya di bawah "Contents> MacOS"
gd1
@ g1 ya, Anda benar! Sekarang saya bertanya-tanya bagaimana menjalankannya dalam mode 32-bit. :)
Kjuly

Jawaban:

19

OS X tidak memiliki mode keseluruhan 64/32 bit; itu menjalankan program individual dalam mode apa pun yang tampak "terbaik" ketika mereka mulai. Memegang 3dan 2saat komputer melakukan booting akan membuat kernelnya berjalan dalam mode 32-bit, tetapi ini tidak ada hubungannya dengan program mode apa yang dijalankan. OS X dapat dengan senang hati menjalankan program dalam mode 32-bit di bawah kernel 64-bit, atau program dalam mode 64-bit di bawah kernel 32-bit.

Jika program Anda hanya menyertakan kode 32-bit, ia akan berjalan dalam mode 32-bit tanpa Anda harus melakukan sesuatu yang istimewa. Anda dapat memeriksa ini dengan menjalankan fileperintah pada executable (umumnya di AppName.app/Contents/MacOS/AppName. Berikut adalah beberapa contoh:

$ 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

... yang memberitahu saya bahwa Chess.app masing-masing menyertakan kode Intel 32-bit dan 64-bit ("i386" dan "x86_64"), VLC.app mencakup Intel 32-bit dan PowerPC 32-bit ("ppc") kode, dan Adobe Reader hanya mencakup kode Intel 32-bit.

Anda juga dapat memperoleh beberapa informasi ini (walaupun tidak secara terperinci) dari laporan sistem Informasi Sistem (di bagian Perangkat Lunak -> Aplikasi).

Jika suatu aplikasi memiliki kode 32- dan 64-bit, Anda dapat memilih yang mana untuk digunakan di jendela Finder's Get Info untuk aplikasi (akan ada kotak centang "Buka dalam mode 32-bit"), atau dengan menggunakan archperintah pada executable (misalnya arch -i386 /Applications/theApp.app/Contents/MacOS/theApp). Tetapi Anda biasanya tidak perlu melakukan ini, OS melakukan pekerjaan yang baik untuk memilih mode terbaik.

(Salah satu contoh di mana Anda perlu menimpa pemilihan mode secara manual adalah untuk kompatibilitas plugin atau perpustakaan. Jika Anda memiliki aplikasi 32 & 64-bit, tetapi harus dapat memuat plugin atau pustaka 32-bit saja, Anda harus memiliki untuk memaksa program berjalan dalam mode 32-bit.)

Jika Anda memiliki program 64-bit yang tidak akan berjalan di bawah kernel 32-bit, mereka mungkin memiliki semacam bug aneh, atau ada sesuatu yang bahkan lebih aneh sedang terjadi. Jika Anda memberikan detail spesifik, kami mungkin dapat mencari tahu apa yang sebenarnya salah.

EDIT: Sepertinya aplikasi ini hanya 32-bit, dan menginstal ekstensi kernel 32-bit saja (kext). Sementara porsi aplikasi 32-bit dapat berjalan di bawah mode kernel apa pun, keext 32-bit hanya dapat memuat ke dalam kernel 32-bit (seperti plugin untuk kernel). Anda dapat menjalankan kernel dalam mode 32-bit dengan menahan 3dan 2pada saat startup, atau secara permanen dengan perintah sudo systemsetup -setkernelbootarchitecture i386(lihat KB Apple # HT3773 ).

Perhatikan bahwa tidak perlu melakukan sesuatu yang istimewa untuk membuka aplikasi dalam mode 32-bit; karena hanya itu format yang disertakan, itu akan berjalan dalam mode itu tidak peduli bagaimana itu diluncurkan (khususnya, archperintah tidak diperlukan).

Jika Anda memiliki aplikasi 64-bit yang tidak berjalan dengan baik di bawah kernel 32-bit, itu adalah masalah yang terpisah dan saya akan merekomendasikan memposting pertanyaan lain tentang itu.

Gordon Davisson
sumber
"One instance where you would need to manually override the mode selection is for plugin or library compatibility"ini mungkin kasus saya perlu menjalankan aplikasi saya dalam mode 32-bit saja. Program yang selalu macet adalah MS Word(saya menggunakan LaTeX sekarang), saya tidak yakin apakah mode 32-bit menyebabkan crash atau tidak, hanya tebakan pribadi. Dan arch -i386 /Applications/theApp.app/Contents/MacOS/theAppitulah yang saya inginkan! Saya akan coba sekarang! Terima kasih!! : D
Kjuly
Sayangnya, gagal dengan Components lostkesalahan. :( Saya menempelkan log ke Q. Terima kasih sebelumnya!
Kjuly
1
Log itu menunjukkan sedang mencoba memuat ekstensi kernel (.kext), yang berarti bahwa mode kernel memang berpengaruh (itu pada dasarnya seperti plugin kernel), dan bit "arsitektur yang diminta / dapat dieksekusi tidak ditemukan" menunjukkan bahwa itu tidak mendukung mode kernel sedang berjalan masuk. Pertama, saya akan mencari tahu mode apa kext memiliki dengan sesuatu seperti file /tmp/xlpppoe.kext/Contents/MacOS/xlpppoe(atau mungkin dalam /Applications/ Èó pembuatanËÆØ.app /xlpppoe.kext sebagai gantinya). Jika hanya 32-bit, Anda harus memulai kernel dalam mode 32-bit (lihat di sini ).
Gordon Davisson
Hai @ Gordon, saya memasukkan info ke pertanyaan saya. Mungkin Anda dapat menggunakan bagian terakhir saya sebagai bagian dari jawaban Anda. : p Terima kasih !!
Kjuly