gcc компилирует C в машинный код, это означает, что он будет работать только на той архитектуре, для которой он был скомпилирован.Кроме того, как правило, существуют некоторые зависимости от других двоичных файлов (например, C-runtime, posix, Win32), поэтому, если вы скомпилируете программу в Ubuntu, она будет работать в Ubuntu, даже если у нее не установлен gcc, но она не будет работать в Windows или другихUnixes (например, Solaris или HPUX).
Это то, где C отличается от Java и C #, где код компилируется в код виртуальной машины и выполняется в любой системе, имеющей этот язык исполнения (JVM / CLR).Другими переносимыми языками являются языки сценариев (Perl / Python / JavaScript), где сценарий может выполняться везде, где есть интерпретатор.