>>15
ざっくりいうとソースコードは共通でコンパイル時に生成される機械語が違う
だから標準ライブラリの範囲とかだとOSが違っても同じコードで同じように動く
その標準ライブラリが何してるかというとOSごとに異なるシステムコールやAPI呼び出しを行ってる
標準以外のライブラリも同様にOSごとの差異を吸収するように作るから、クロスプラットフォーム対応のライブラリ使う場合は概ね共通のソースが使える
吸収しきれない場合は何かしらの注釈がついてたりする