Несовместимый ABI - вот почему, несмотря на то, что OSX, Linux, Solaris, Windows и * BSD все работают на процессорах Intel x86, это простая программа POSIX только для POSIX, скомпилированная в одной ОС, которая не использует какие-либо специфические или собственные системные вызовы производителя и / или библиотеки обычно не могут работать на одной ОС при компиляции для другой ОС *.
ABI не очень важен для программистов как таковых, потому что мы уже инстинктивно знаем, что вы не можете запустить приложение Windows на Mac. Даже непрограммисты (кроме сценаристов Голливуда) знают это. Разработчикам компиляторов важно, когда им нужно ориентироваться на определенную среду.
* примечание: некоторые операционные системы, такие как Linux и BSD, поддерживают внешний ABI, так что простая программа командной строки Linux иногда может выполняться на BSD без изменений. И, конечно, есть слои эмуляции, как вино.