Embora o código objeto subjacente possa ser o mesmo entre as plataformas, aplicativos nativos não-triviais não podem ser compatíveis com binários entre o Windows e o Linux.
Se o executável do Linux que você está tentando converter estiver dinamicamente vinculado, ele exigiria a presença de bibliotecas que não existem no Windows (você pode ver essa lista de bibliotecas executando ldd /path/to/program
na máquina Linux).
Mesmo que você tenha convertido todas as bibliotecas para o formato executável PE ou as vinculou estaticamente, o sistema chama o NT Kernel e O kernel do Linux é completamente diferente. Não há correspondência direta entre eles.
A melhor opção seria encontrar o código-fonte para o aplicativo original, se possível. Se o programa é escrito de forma portátil, ele pode compilar tanto no Windows quanto no Linux. Mesmo que as chamadas do sistema não sejam as mesmas entre as duas plataformas, um subconjunto de suas implementações da biblioteca C possui um comportamento padronizado.