¿Linux como plataforma de desarrollo completa?

8

Quiero hacer que mi Fedora Linux sea capaz de seguir:

  1. Utilice Linux para completar la plataforma de desarrollo sin requerir ninguna otra instalación del sistema operativo, pero aún así puede construir y probar programas en diferentes plataformas.

  2. Reemplace completamente la máquina de Windows para todos los demás trabajos, por ejemplo, Office, Paint, Escritorio remoto, etc.

¿Puede sugerir proyectos y herramientas de código abierto para lograr los objetivos anteriores?

Xinus
fuente
¿Quieres probar tu programa en otras plataformas con tenerlos instalados? ¿O estoy malinterpretando esa parte
Michael Mrozek
3
Esta pregunta está redactada de manera muy general y, por lo tanto, no es fácil de responder. Sería útil si pudiera especificar un poco más de cerca qué es exactamente lo que quiere hacer. Puede ser que ciertas plataformas sean compatibles con una solución, pero no todas las plataformas posibles. Además, ¿aceptan máquinas virtuales?
txwikinger

Respuestas:

3

Puede realizar fácilmente el desarrollo multiplataforma, ya sea un programador de sistemas, un desarrollador web o un desarrollador de aplicaciones de escritorio. Si le gustan los sistemas, es probable que las utilidades y / o controladores que escriba para Linux funcionen bien para otros * nix con modificaciones muy mínimas. Siempre que escriba el código C estándar y no use demasiadas llamadas específicas del sistema, puede que incluso sean fáciles de transferir a Windows.

Si eres un desarrollador de aplicaciones de escritorio, puedes apuntar a GTK, QT o wxWidgets y es probable que tu aplicación funcione bien en las 3 plataformas principales hoy (* nix, Windows, Mac). Nuevamente, mantenga las llamadas específicas del sistema al mínimo o aíslelas en una biblioteca contenedor que será específica del sistema. También se llama a una máquina virtual como JVM y / o CLR que permitirá que la aplicación funcione en todos los ámbitos.

Si usted es un desarrollador web, es probable que encuentre demasiadas alternativas diferentes para elegir. Prefiero un pequeño servidor web llamado Cherokee y desarrollo y ejecuto aplicaciones ASP.NET (mono) y Django que se ejecutan en él y usan un backend PgSQL.

Entonces, la conclusión es que el desarrollo multiplataforma en Linux se puede hacer, siempre que pueda compilar el código en la plataforma de destino y tenga esto en cuenta al escribir su código o si apunta a una VM. El otro punto es que puede toparse con La paradoja de la elección y no saber qué usar. Para eso lea a continuación mi respuesta a la segunda pregunta.

En cuanto a la segunda pregunta, el mejor recurso que he encontrado se llama Alternativas de código abierto . Este sitio web enumera el software comercial y sus alternativas de código abierto. Casi todas las alternativas se ejecutan en Linux y FreeBSD.

λ Jonas Gorauskas
fuente
Lo sentimos, pero los controladores de dispositivo dependen mucho del núcleo (e incluso de la versión exacta del mismo). Las piezas que interactúan directamente con el núcleo dependen más o menos íntimamente de él (cosas como glibc, ps (1), mount (8)), otras piezas del "sistema" mucho menos (por ejemplo, sort (1) o bash (1) son programas C / C ++ "simplemente" comunes y corrientes, que compilarán y ejecutarán exactamente lo mismo en Unices variados). Todo el material de la GUI es independiente del kernel, pero tiene sus propias reglas.
vonbrand
4

Definir "plataforma". No puede probar razonablemente el software destinado para su uso en Windows o Mac sin ejecutar realmente esos sistemas operativos, incluso si es posible utilizar la compilación cruzada para construirlo en Linux. Para pruebas reales en otros sistemas operativos, VMware es una gran herramienta.

La segunda parte de su pregunta probablemente debería ser una pregunta totalmente separada. Pero puede usar OpenOffice.org o Google Docs para reemplazar MS Office, Pinta o GIMP o lo que sea para reemplazar Paint, VNC o Empathy + Vinagre para reemplazar Remote Desktop, etc.

Sería más fácil responder estas preguntas si proporcionara algunos casos de uso más específicos.

Arenoso
fuente
Es posible que desee recordar que Apple solo autoriza a MacOSX a ejecutarse en computadoras de la marca Apple. O podría ignorar eso, dependiendo de cómo se sienta acerca de las licencias retráctiles.
David Thornley
Correcto, por supuesto, podría usar OS X como su sistema operativo host y ejecutar Linux y Windows con VMware Fusion.
Sandy
2

Weeeeeeel, el # 1 es bastante loco, señor. No sé si hay alguna forma de lograr este objetivo. Se puede realizar una compilación cruzada con otros * nixes ( con un poco de dolor de cabeza ) en su cuadro de desarrollo, pero ¿cómo exactamente se supone que debe ejecutar ese código sin el sistema operativo y la arquitectura adecuados? Hay grandes incursiones en la emulación del sistema , pero en última instancia, esto es un obstáculo. Si desea probar el software en un sistema operativo / arquitectura, ejecútelo en ese sistema operativo / arquitectura.

Ahora, por otro lado, existen herramientas que facilitan la creación del mismo proyecto en una amplia gama de configuraciones. Cmake es probablemente el más conocido y probado. Al menos esto lo ayudará a probar su proyecto en otros sistemas, o alentará a otros a que lo hagan por usted.

En realidad, estoy bastante seguro de que esto también es imposible en otros sistemas operativos.

# 2 es mucho más fácil

y así sucesivamente. Ayudaría más, pero la agudeza de tus preguntas disminuye drásticamente.

Eli Frey
fuente
1

Depende de su plataforma de destino. Si está desarrollando para una plataforma virtual (Java, o incluso .NET), debería estar más que bien. Hay algunas plataformas que son aún más amigables en Linux que en Windows (por ejemplo, Ruby).

En cuanto a Linux como computadora de escritorio, solo tiene que enumerar el software que está buscando. Apenas hay software de escritorio de Windows hoy en día que no tenga una alternativa de Linux.

Pablo
fuente
1

MonoDevelop debería poder ayudarlo a manejar el lado del desarrollo:

MonoDevelop es un IDE diseñado principalmente para C # y otros lenguajes .NET. MonoDevelop permite a los desarrolladores escribir rápidamente aplicaciones web de escritorio y ASP.NET en Linux , Windows y Mac OSX . MonoDevelop facilita a los desarrolladores portar aplicaciones .NET creadas con Visual Studio a Linux y mantener una única base de código para todas las plataformas.

(el énfasis es mío)

Larry Smithmier
fuente