Если вы хотите исправить существующий код для достижения совместимости с Linux-ом, то вам потребуется использовать ifdef...endif для того, чтобы окружить необходимые для этого участки. Не существует стандарта выделения кода, зависящего от операционной системы, но многие программы используют соглашение, принятое в SVR4 для кода System V, в BSD для BSD-кода и для linux - в Linux-зависимом коде:
Если вы определили _BSD_SOURSE, то для библиотеки определится _FAVOR_BSD. Тогда некоторые вещи POSIX-а и SVR4 будут вести себя, как в BSD. Например, если определено _FAVOR_BSD, setgmp и longgmp будут сохранять и запоминать маску сигнала, а getpgrp будет допускать аргумент PID. Напомним, что вы должны собирать программу с libbsd, чтобы добиться BSD-поведения.
gcc Linux-а автоматически определяет набор макросов, которые вы можете использовать в своей программе:
Многие программы используют #ifdef linux для окружения Linux-зависимого кода. Заметьте, что Linux поддерживает многие вещи из Sistem V, и поэтому начинать программы, написанные также для Sistem V и BSD, лучше всего с Sistem V-версии. Впрочем, вы можете начинать и с BSD и собирать при помощи libbsd.