Vamos listar os motivos, por que, ao rodar em alguma outra distribuição GNU / Linux, um aplicativo não funcionaria:
- Bibliotecas compartilhadas ausentes
- Bibliotecas compartilhadas da versão incorreta
- (caso você os tenha usado) faltando utilitários de linha de comando
- Quebrando a mudança na API do kernel
Para combater o problema com libs, você pode simplesmente vincular tudo estaticamente na compilação. Aumentaria significativamente o tamanho do aplicativo, mas sim, diminuiria várias dependências de tempo de execução.
Os utilitários de linha de comando podem ser lidos segmentando algum padrão específico, POSIX .
Você não pode lutar contra uma mudança na API do kernel, mas é (a parte do espaço do usuário) muito estável - estável o suficiente para que você simplesmente não se preocupe com isso.