Executa programa de 64 bits a partir do shell de 32 bits

1

Eu mudei do Cygwin para o WSL recentemente e tenho um problema com o Sourcetree e commithooks.

O Sourcetree usa sua própria versão do Cygwin (32 bits) para executar o git. Meu ambiente de desenvolvimento é executado no WSL (que é apenas 64 bits).

Então, o que eu quero fazer é chamar a WSL bash de Sourcetrees Cygwin Bash e executar os cheques de commithook. Mas isso não funciona, já que o Cygwin Bash é um programa de 32 bits e, portanto, não pode executar o bash do WSL, que é de apenas 64 bits. Então, o Cygwin Bash vê o WSL como um arquivo não executável.

Existe uma maneira de sair do sandbox de 32 bits no Windows 10 para chamar um programa de 64 bits?

    
por Dakkaron 14.06.2017 / 11:43

2 respostas

1

O que você encontrou aqui é o redirecionamento do sistema de arquivos WOW64 . Como bash.exe reside no diretório 64-bit System32 , mas os programas de 32 bits veem o 32-bit SysWOW64 quando solicitam System32 . Não é uma questão de ser incapaz de rodar 64 bits a partir de 32 bits, mas sim não ser capaz de encontrar o executável que você está tentando executar em primeiro lugar.

Você tem uma maneira de contornar isso. Citando esse link:

32-bit applications can access the native system directory by substituting %windir%\Sysnative for %windir%\System32. WOW64 recognizes Sysnative as a special alias used to indicate that the file system should not redirect the access.

Portanto, basta chamar o caminho explícito via sysnative : %windir%\Sysnative\bash.exe (ou $WINDIR/Sysnative/bash.exe no cygwin).

    
por 14.06.2017 / 12:11
0

Não, não diretamente se o seu sistema operacional for de 32 bits, mas para isso você pode criar uma sessão de VM de 64 bits se tiver um processador de 64 bits, mas tiver instalado um sistema operacional host de 32 bits.

    
por 14.06.2017 / 11:53