Eu não estou perguntando sobre como fazer um exe do Windows funcionar no Linux.
Estou perguntando POR QUE ele não funciona.
O que há de diferente na maneira como o Windows executa um executável e o Linux executa um executável? Por que eles tinham que ser diferentes? Além disso, por que os executáveis linux não têm uma extensão de arquivo?
Respostas:
Os executáveis do Linux e Windows usam diferentes formatos. O Linux usa o formato ELF na maioria das arquiteturas, enquanto o Windows usa o formato PE . O ELF é mais adequado para a maneira como o Linux gerencia bibliotecas compartilhadas, e o PE é mais adequado para a maneira como o Windows gerencia bibliotecas compartilhadas, mas não há razão fundamental para que o Linux não possa executar executáveis do PE ou executáveis do Windows ELF. De fato, o Linux pode executar executáveis PE, através do Wine .
A dificuldade é que o Windows e o Linux têm APIs completamente diferentes : eles têm diferentes interfaces do kernel e conjuntos de bibliotecas. Portanto, para realmente executar um aplicativo do Windows, o Linux precisaria emular todas as chamadas de API que o aplicativo faz. Isso dá muito trabalho. O Wine faz isso até certo ponto, mas é muito difícil, principalmente porque o criador do Windows não coopera. Você pode compará-lo com, digamos, aprender inglês quando o idioma nativo é o chinês: o formato executável é o alfabeto (não é tão difícil de dominar), a API é o vocabulário (leva anos para chegar a um nível em que você pode começar a ler literatura )
fonte
Os binários do Windows têm uma ABI diferente e usam uma API diferente dos binários do Linux.
Os binários do Linux não precisam de uma extensão porque * nix usa bits de permissão para identificar um executável em vez da extensão.
fonte
Foi assim que ouvi o lado das janelas explicado em termos leigos pelos programadores.
No Windows, existem ganchos nos programas e o sistema operacional que o Exe faz para isso simplesmente não existe no Linux. Por causa das diferenças nos dois ambientes. Inicialmente, o Linux procura permissões, o Windows procura um formato vinculável primeiro examinando a extensão, examinando as propriedades e depois dentro do arquivo Exe etc.
Existem aplicativos como o Netbackup que foram iniciados no Linux e foram modificados para serem executados no ambiente Windows sem o uso do wine IMHO, frequentemente esses são alguns dos aplicativos Windows mais estáveis e com melhor comportamento.
Quando aplicativos do Windows. tornam-se indisciplinados geralmente porque alguns dos ganchos mantidos pelo aplicativo não foram completamente liberados e o Windows pensa que sim (vazamentos de memória). Quando o Windows entrega esse espaço de memória não liberado para outro aplicativo, bata e grave.
fonte