edupersoft
(usa Manjaro Linux)
Enviado em 08/05/2008 - 08:28h
Só para tentar explicar a incompatibilidade. Um programa roda em baixo do SO. Para acessar o hardware, como HD, impressora, placa de rede, mouse, teclado, o programa faz uma chamada de API do SO e este faz o acesso ao hardware, através dos módulos/drivers escritos especificamente para eles. Na verdade quando mandamos uma informação pela internet, ou gravamos um arquivo no hd, ou ainda imprimimos um text, quem faz isso é o SO através das suas APIS. O SO ainda gerencia a memória que será usada pelo programa entre outras coisa.
O problema é que cada SO, Windows, Linux, MAC, tem suas próprias APIs, por isso eles são incompativeis. Um programa compilado para Windows, irá tentar chamar as APIs do Windows, enquanto um compilado para o Linux terá as APIs do Linux.
O wine é um programa que "sabe" como são as APIs do Windows, então ele roda o exe respondendo as APIs do programa Windows. Se um programa Windows, vai fazer uma impressão, por exemplo, o wine recebe a chamada de API para esta tarefá e chama as APIs do Linux que farã a impressão. É mais ou menos isso.
A entrada e o resulta das APIs são documentadas pela microsoft, mas como ela faz o que se propõe e os efeitos colaterais não. Por isso o wine funciona como engenharia reversa, os desenvolvedores estudam a documentação do windows e tenta criar as APIs que funcionem do mesmo jeito.
O Wine é um projeto que vem evoluindo bastante.