Alguém pode esclarecer como o suporte para grandes endereços cientes (LAA) para aplicativos de 32 bits funciona no Wine?
Sei que por padrão no Windows, os aplicativos de 32 bits são limitados a no máximo 2 GB de RAM; no entanto, é possível definir um sinalizador LAA no executável, para permitir que ele use até 4 GB.
Meu entendimento é que, por padrão, o Wine respeita esse limite de 2 GB para aplicativos Windows de 32 bits e permitirá que 4 GB sejam usados, se o sinalizador LAA estiver definido no .exe. No entanto, ouvi dizer que também existe uma opção global que pode ser configurada para o Wine permitir automaticamente 4 GB para todos os aplicativos do Windows de 32 bits - ( LARGE_ADDRESS_AWARE=1
ou algo parecido?).
Alguém pode esclarecer se essa é a variável de ambiente correta? Funciona no vanilla Wine ou apenas no Wine-staging? Também é necessário ao executar aplicativos de 32 bits em um prefixo Wine de 64 bits? Eu pensei que havia uma página de guia do usuário do Wine sobre isso, mas não consegui encontrá-la.
Existe um patch que você pode instalar para cada aplicativo x86 que está tentando executar no WINE, que pode ser encontrado aqui: https://ntcore.com/?page_id=371
Além disso, há um patch para WINE para definir o sinalizador LAA em arquivos PE. Dando uma olhada no conteúdo dos arquivos incluídos no github, parece que você está correto que a variável que você está procurando é
LARGE_ADDRESS_AWARE
https://github.com/randomstuff/pe-set-laa . De acordo com o criador deste patch, ele funcionará no WINE propriamente dito.Dependendo do que você está tentando executar (Jogos ou Executáveis Portáteis), parece haver alguma inconsistência em relação à eficácia do sinalizador com determinados aplicativos.
Se você deseja construir o Wine a partir do código-fonte, também pode usar este código para corrigir o LAA globalmente.