¿El software tiene que ser construido desde cero para un sistema operativo diferente?

La mayoría de las veces, sí, ya que la mayoría del software utiliza bibliotecas dedicadas.

Algunos usan API portátiles para facilitarles la vida, lo que puede reducir significativamente el tiempo de desarrollo.

El principal problema entre los sistemas operativos son las llamadas al sistema proporcionadas por la API del sistema y el soporte para bibliotecas.

Si su aplicación usa 20 bibliotecas específicas de Windows, necesita encontrar reemplazos para esas 20 bibliotecas en otro sistema operativo, porque el otro sistema operativo no es compatible con Windows .dlls.

Solo hay 3 casos en los que codifica una vez y se ejecuta en todas partes:

  1. Utiliza un lenguaje multiplataforma como Java o Python. Que se ejecuta exactamente igual en todos los sistemas operativos.
  2. Desarrollas software web / aplicaciones web
  3. Para dispositivos móviles, utiliza Xamarin.Forms para el desarrollo multiplataforma (Windows Phone, Android, iOS)

¡Espero que esto ayude!

El proceso general se llama portabilidad, y es un campo muy atractivo para los programadores que les gusta trabajar a nivel de sistema operativo. La idea es hacer que los programas / aplicaciones sean multiplataforma, contribuyendo a la interoperabilidad.

Muchos programas que da por sentado en Windows en realidad comenzaron a desarrollarse en Linux, y luego tuvieron que ser portados. Irónicamente, es más fácil portar de Linux a Mac debido al cumplimiento de POSIX, pero el dinero rige al hombre.

Depende de los dispositivos en los que desea ejecutar su código

Para las computadoras, puede usar las API POSIX (interfaces OS portátiles) para que su código se compile correctamente en diferentes sistemas operativos. O puede usar lenguajes que usan sus propias máquinas virtuales como Java. Los sistemas distribuidos son otra buena opción.

Pero en lo que respecta a las aplicaciones móviles, tuvo que hacer todo desde cero para diferentes sistemas operativos hasta que compiladores multiplataforma como Xamarin aparecieron. El lenguaje que debe tener conocimiento para usar esta herramienta es C #. Puede compilar el mismo código para las tres plataformas (Android, Windows phone, iOS) y crear binarios en consecuencia