Se você está escrevendo para Linux não incorporado, o principal a ter em mente é que diferentes distribuições terão uma coleção diferente de versões de bibliotecas. Portanto, você deve definir uma linha de base suficientemente antiga. À medida que o Debian é atualizado lentamente, o Debian stable (ou antigo quando existe, nos poucos meses após o lançamento) tende a ser uma escolha razoável.
Você precisará empacotar separadamente para cada distribuição. Se seu aplicativo é de código aberto e é bem-sucedido, você pode contar com alguém para buscá-lo e contribuir com a embalagem, para que não seja uma habilidade essencial. Além das embalagens, as diferenças entre distribuições afetam principalmente a administração do sistema, não o desenvolvimento ou o uso diário.
Se você vai corrigir o kernel, terá que testar com mais distribuições, pois cada distribuição tem seus próprios patches que podem causar incompatibilidades e cada distribuição possui configurações de terra do usuário que podem depender de diferentes conjuntos de interfaces do kernel disponíveis (por exemplo, requisitos para algumas coisas não serem módulos).
Observe que o que eu escrevi acima não é verdade se você deseja que seu aplicativo funcione em sistemas incorporados (aqui significa qualquer coisa que não seja um servidor, desktop ou laptop), que mesmo quando eles executam um kernel Linux, geralmente não possuem as bibliotecas usuais, começando com Glibc sendo evitado em favor de µClibc , dietlibc , Bionic , etc.