Linux dan Windows executable menggunakan format yang berbeda. Linux menggunakan format ELF pada sebagian besar arsitektur, sedangkan Windows menggunakan format PE. ELF lebih cocok dengan cara Linux mengelola pustaka bersama, dan PE lebih cocok dengan cara Windows mengelola pustaka bersama, tetapi tidak ada alasan mendasar mengapa Linux tidak dapat mengeksekusi executable PE atau executable Windows ELF. Nyatanya Linux bisa mengeksekusi executable PE, melalui Wine.
Kesulitannya adalah Windows dan Linux memiliki API yang sama sekali berbeda:mereka memiliki antarmuka kernel dan kumpulan pustaka yang berbeda. Jadi untuk benar-benar menjalankan aplikasi Windows, Linux perlu meniru semua panggilan API yang dibuat oleh aplikasi tersebut. Itu banyak pekerjaan. Anggur melakukannya sampai batas tertentu, tetapi sangat sulit, terutama karena pembuat Windows tidak bekerja sama. Anda dapat membandingkannya dengan, katakanlah, belajar bahasa Inggris ketika bahasa ibu Anda adalah bahasa Cina:format yang dapat dieksekusi adalah alfabet (tidak terlalu sulit untuk dikuasai), API adalah kosakata (membutuhkan waktu bertahun-tahun untuk mencapai tingkat di mana Anda dapat mulai membaca literatur ).
Binari Windows memiliki ABI yang berbeda dan menggunakan API yang berbeda dari binari Linux.
Biner Linux tidak memerlukan ekstensi karena *nix menggunakan bit izin untuk mengidentifikasi executable, bukan ekstensi.