Você pode executar um aplicativo compilado para uma distribuição do Linux em qualquer outra distribuição, desde que essa outra distribuição tenha as bibliotecas necessárias disponíveis. O problema na prática é geralmente que diferentes distribuições enviam diferentes versões de bibliotecas em um determinado ponto no tempo.
Vincular bibliotecas estaticamente é uma má ideia. Ele aumenta o tamanho do arquivo do aplicativo (não é muito preocupante na maioria dos casos, exceto para pessoas com pouca largura de banda da Internet), aumenta o tamanho do aplicativo na memória (isso é mais uma preocupação na prática) e significa que seu aplicativo permanecerá preso todos os erros da versão que você vinculou. Vincule suas bibliotecas dinamicamente para que seus usuários se beneficiem das correções de bugs para as bibliotecas, especialmente as correções de segurança.
Além disso, enquanto você pode executar aplicativos, há o problema de empacotamento. Instalar aplicativos manualmente é uma dor. Se você não distribuir um pacote RPM para o CentOS e um pacote deb para o Ubuntu, você fará um desserviço aos seus usuários.
Então você deve gerar pacotes apropriados para todas as distribuições. Você pode executar um aplicativo criado para o Ubuntu no CentOS, com mais ou menos esforço dependendo dos requisitos da biblioteca, mas não é possível implantar um aplicativo criado para o Ubuntu no CentOS. / p>