El código fuente digamos que es el «paquete» universal que vale para todos los Linux y ahí me puedo olvidar de cuántas distribuciones haya. Desde ese punto de vista podríamos decir, para que me entiendas (no me quiero poner demasiado técnico ni formal), que todos las distribuciones son compatibles. El código fuente lo preparo intentando cumplir con las reglas que hay escritas y he terminado. Es posible que haya que hacer algún ajuste pero puede hacerlo al vuelo la persona que va a construir el programa.
El problema viene cuando quieres hacerlo tan fácil como que el usuario pulse doble clic sobre el archivo y se acabó. Un aspecto lo entenderás fácilmente: no es lo mismo un programa que funcione sobre un sistema operativo de 32 bits que lo haga sobre uno de 64 bits. Desgraciadamente, en el mundo Windows los 64 bits todavía no están muy extendidos, lo empezará a hacer ahora; pero en el mundo Linux hace ya bastantes años que es normal ver versiones para los «nuevos» microprocesadores. Lo de nuevos lo pongo entre comillas porque el primer micro de 64 bits orientado al consumo creo que tiene cinco años. Ya ha llovido.
Otros aspectos son más de carácter formal que otra cosa. Hay distribuciones que utilizan una gestión de paquetes basada en el gestor de Red Hat (rpm) y otras muchas lo hacen basado en el gestor de Debian (deb). Luego, dentro de las que comparten gestor, hay que ver qué versiones de otros programas (de los que depende Head over Heels) tienen instalados por defecto y ajustar el binario en consecuencia.
Bien es cierto, que una vez tienes la base para la construcción de paquetes rpm y deb, puedes empezar a hacerlos como churros para cualquier distribución que los use. El fastidio viene porque tengo ya
nosecuántos gigas de discos duros de máquinas virtuales en mi ordenador. Menos mal que mis discos son grandotes.
Espero que me hayas entendido, si no, encantadísimo de resolver tus dudas.