• Viernes 15 de Noviembre de 2024, 04:35

Autor Tema:  SO  (Leído 1809 veces)

Alfonsos1

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
SO
« en: Domingo 9 de Enero de 2011, 19:56 »
0
me dijieron que si tiengo windows y compilo un programa en C++, ese programa no andará en otros SO

eso es verdad?

uso dev-cpp

jask2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: SO
« Respuesta #1 en: Domingo 9 de Enero de 2011, 22:08 »
0
Un programa es una rutina, conjunto de rutinas que resuelven un problema, para esto es que se programa, aunque ya se sabe que hay otro tipo de programacion para entretenimiento. Como cada problema intenta solucionar un problema especifico, la plataforma en la que lo desarrollas seria especifica para cada necesidad. Por lo tanto cada aplicaciones es para su entorno. Aunque el lenguaje C/C++ son multiplataforma debido a que puedes portar el codigo a diferentes plataformas, aunque siempre y cuando sea la libreria estandar. Una vez que te metes con el Sistema Operativo ya es otro boleto. En windows, en mac, linux y windows puedes usar el wxwindow o el qt. Que son gratuitos y multiplataforma. Y si es especifico puedes utilizar algun IDE para cada S.O., en mac el xcode que es gratuito pero para aplicaciones ¨mejores¨ se recomienda programar en objective-C.

Munire

  • Nuevo Miembro
  • *
  • Mensajes: 6
  • Nacionalidad: es
    • Ver Perfil
Re: SO
« Respuesta #2 en: Lunes 10 de Enero de 2011, 01:45 »
0
que pasa que no te lo crees y has ido a preguntar en otro foro??

ya te lo he dicho en el otro foro pero como veo que no lo entiendes te lo vuelvo a explicar.

tu tienes el codigo de un programa, que son instruciones que das al ordenador en un lenguaje, en este caso C++. al compilar (pasar ese codigo a .exe) el ordenador traduce el codigo a su lenguaje, que es el que entiende, unos y ceros.  ok?

cada sistema operativo es distinto (linux, windows, mac...) por lo que al traducir ese programa va trabajar de forma diferente. por ejemplo en windows se genera un ejecutable .exe,  en linux un .out,  son totalmente distintos. con lo cual no puedes ejecutar un .exe en linux, ni un .out en windows.

si quieres que tu programa se ejecute tanto en linux como en windows, solo tienes que compilarlo en windows ( asi tienes el programa para windows) y compilarlo en linux (asi tienes el programa para linux)

si tienes dudas pregunta, pero ya te adelanto la respuesta a tu pregunta

Citar
me dijieron que si tiengo windows y compilo un programa en C++, ese programa no andará en otros SO

eso es verdad?
SI

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: SO
« Respuesta #3 en: Lunes 10 de Enero de 2011, 17:57 »
0
Para dar una idea mas clara de la complejidad, hay que hablar de los sistemas operativos. Actualmente existen (basicamente, en los S.O. mas usados) varios tipos de ficheros ejecutables nativos (es decir, los compilados de C, C++ y otros que no usan una maquina virtual de procesos como Java) estos son ELF (Executable and Linkable Format), PE (Portable Executable) y Mach-O (usado por Mac OS X y iOS).
El formato ELF es usado por los sistemas UNIX (excepto Mac OS X) y Unix-Like (como Linux y *BSD) así como otros sistemas operativos menos conocidos.
ELF esta diseñado para soportar al menos 94 plataformas (marcas de procesadores) y solamente la familia de BSD es capas de ejecutar ficheros ELF de algunos procesadores y sistemas operativos distintos de forma nativa y limitada, ya que cada sistema operativo y cada hardware funciona de forma distinta y programar un sistema operativo que se comporte como al menos 10 sistemas operativos distintos es muy complicado. Ahora, esto es en un mismo tipo de fichero.

De hecho, si tomas un ejecutable de Windows compilado en ARM y lo tratas de ejecutar en uno Intel (distinto a ARM) no te aseguro que no funcionara. Intala GNU/Linux en un Intel y trata de ejecutar un ELF compilado en un GNU/Linux SPARC... no ejecuta verdad?

Citar
si quieres que tu programa se ejecute tanto en linux como en windows, solo tienes que compilarlo en windows ( asi tienes el programa para windows) y compilarlo en linux (asi tienes el programa para linux)
Ahora, existen maquinas virtuales, emuladores y "capas de compatibilidad" que permiten ejecutar con ciertas limitaciones distintos ficheros ejecutables. Ver Wine
Citar
en linux un .out
No, los ejecutables de Linux normalmente no tiene extension.

Como anecdota curiosa:
Citar
OS/2 offered excellent compatibility with DOS and Windows 3.1 applications. No, this is not an error. Many application vendors argued that by developing a DOS or Windows app, they would reach the OS/2 market in addition to DOS/Windows markets and they didn't develop native OS/2 applications.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.