Eu tenho um aplicativo que existe apenas uma versão de 32 bits. Para usá-lo, eu costumava pressionar 2
& 3
juntos antes de inicializar o Mac, para que ele funcione no modo 32 bits. No entanto, alguns aplicativos (versão de 64 bits que foi instalada anteriormente) sempre travam nesse modo.
Por acaso vi uma solução que executa o aplicativo de 32 bits no sistema de 64 bits:
arch -i386 theApp.app
Mas eu tentei com arch: /Applications/theApp.app isn't executable
erro. Eu verifiquei a permissão do arquivo e ela mostrou drwxrwxr-x
, deve ser executável, não é?
Edição : Como @ gd1 disse, theApp.app é uma pasta (é chamada de pacote no OSX, eu acho) e, portanto, não é executável.
Mas ainda preciso de uma solução alternativa:
como posso executar corretamente meu aplicativo de 32 bits no sistema de 64 bits?
EDIT : Eu posso abrir o aplicativo arch
agora com o comando (obrigado @GordonDavisson):
arch -i386 /Applications/theApp.app/Contents/MacOS/theApp
No entanto, o aplicativo é executado com Components lost
erro, log mostrado abaixo:
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, o 闪讯.app
(eu odeio !! Mas eu preciso ..) é usado para se conectar à rede na minha universidade na China.
EDIT :
Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/Contents/MacOS/闪讯
/Applications/闪讯.app/Contents/MacOS/闪讯: Mach-O executable i386
e
Kjuly@MacBook-Pro:~$ file /Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe
/Applications/闪讯.app/xlpppoe.kext/Contents/MacOS/xlpppoe: Mach-O object i386
Parece que é apenas de 32 bits e depende do kernel de 32 bits. Estou tão triste. :(
Aqui estão algumas informações que recebi com a ajuda de @GordonDavisson, talvez alguém mais precise.
O DOC mostra alguns métodos para iniciar temporariamente o kernel de 32 bits e usar extensões mais antigas do kernel para software ou hardware de terceiros.
E é sobre "Compatibilidade com o kernel de 64 bits" :
O software de terceiros (como um mecanismo de virtualização) ou o hardware (como uma placa PCIe) que depende de uma extensão do kernel compatível com o Mac OS X Server v10.5 pode não funcionar em Macs que usam o kernel de 64 bits no Mac OS X v10.6. Entre em contato com o fornecedor do software ou hardware para obter uma extensão atualizada do kernel que funcione com o kernel de 64 bits no Mac OS X Server v10.6.
Como solução alternativa, você pode iniciar temporariamente o kernel de 32 bits para usar extensões mais antigas do kernel para seu software ou hardware de terceiros.
Respostas:
O OS X não possui um modo geral de 64/32 bits; executa programas individuais em qualquer modo que pareça "melhor" quando eles são iniciados. Manter 3e 2enquanto o computador inicializa fará com que seu kernel seja executado no modo de 32 bits, mas isso não tem nada a ver com o modo em que os programas são executados. O OS X pode executar programas no modo de 32 bits em um kernel de 64 bits ou programas no modo de 64 bits em um kernel de 32 bits.
Se o seu programa incluir apenas código de 32 bits, ele será executado no modo de 32 bits sem que você precise fazer algo especial. Você pode verificar isso executando o
file
comando no executável (geralmente em AppName.app/Contents/MacOS/AppName. Aqui estão alguns exemplos:... que me diz que o Chess.app inclui código Intel de 32 e 64 bits ("i386" e "x86_64", respectivamente), o VLC.app inclui Intel de 32 bits e PowerPC de 32 bits ("ppc") código e o Adobe Reader inclui apenas código Intel de 32 bits.
Você também pode obter algumas dessas informações (embora não com detalhes explícitos) no relatório do sistema de Informações do sistema (na seção Software -> Aplicativos).
Se um aplicativo tiver código de 32 e 64 bits, você poderá selecionar qual usar na janela Obter informações do Finder para o aplicativo (haverá uma caixa de seleção "Abrir no modo de 32 bits") ou usando o
arch
comando no executável (por exemploarch -i386 /Applications/theApp.app/Contents/MacOS/theApp
). Mas você normalmente não precisa fazer isso, o sistema operacional faz um bom trabalho ao escolher o melhor modo.(Uma instância em que você precisaria substituir manualmente a seleção de modo é para compatibilidade de plug-in ou biblioteca. Se você possui um aplicativo de 32 e 64 bits, mas precisa ser capaz de carregar um plug-in ou biblioteca apenas de 32 bits, terá para forçar o programa a executar no modo de 32 bits.)
Se você possui programas de 64 bits que não funcionam corretamente em um kernel de 32 bits, eles têm algum tipo de bug estranho ou há algo ainda mais estranho acontecendo. Se você fornecer os detalhes específicos, poderemos descobrir o que está realmente dando errado.
EDIT: parece que o aplicativo é apenas de 32 bits e instala uma extensão de kernel de 32 bits (kext). Enquanto a parte do aplicativo de 32 bits pode ser executada em qualquer modo do kernel, os kexts de 32 bits podem carregar apenas em um kernel de 32 bits (é como um plug-in para o kernel). Você pode executar o kernel no modo de 32 bits mantendo pressionado 3e 2na inicialização ou permanentemente com o comando
sudo systemsetup -setkernelbootarchitecture i386
(consulte o KB # HT3773 da Apple ).Observe que não deve ser necessário fazer nada de especial para abrir o aplicativo no modo de 32 bits; como esse é o único formato incluído, ele será executado nesse modo, não importa como seja lançado (em particular, o
arch
comando não será necessário).Se você possui aplicativos de 64 bits que não são executados corretamente em um kernel de 32 bits, esse é um problema separado e eu recomendo postar outra pergunta sobre isso.
fonte
"One instance where you would need to manually override the mode selection is for plugin or library compatibility"
Nesse caso, é necessário executar meu aplicativo apenas no modo de 32 bits. O programa que sempre falha éMS Word
(eu uso o LaTeX agora), não tenho certeza se o modo de 32 bits causa ou não a falha, apenas um palpite pessoal. Earch -i386 /Applications/theApp.app/Contents/MacOS/theApp
é o que eu quero! Vou tentar então! Obrigado!! : DComponents lost
erro. :( Eu colar o log aos meus Q. Obrigado antecipadamente!file /tmp/xlpppoe.kext/Contents/MacOS/xlpppoe
(ou pode ser em /Applications/Èó■ËÆØ.app/xlpppoe.kext). Se for apenas de 32 bits, você precisará iniciar o kernel no modo de 32 bits (veja aqui ).