• Domingo 15 de Diciembre de 2024, 12:45

Autor Tema:  Problemas Gcc  (Leído 2825 veces)

ra_mer

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Problemas Gcc
« en: Domingo 3 de Septiembre de 2006, 22:25 »
0
Buenas!!
He compilado en linux un fichero .c con el compilador gcc, al ejecutarlo en linux me ha funcionado sin problemas. Pero, cuando he provado el .exe en Windows se me abre una ventanita de ms-dos y se cierra sin hacer nada de nada.
Alguien tiene alguna idea de a que se debe????

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problemas Gcc
« Respuesta #1 en: Domingo 3 de Septiembre de 2006, 22:56 »
0
En Windows, si inicias una aplicación de consola haciendo doble clic sobre ella, la ventana se cierra inmediatamente después de terminada la aplicación. Para evitar que se cierre, puedes hacer dos cosas:
  • Ejecutar tu programa desde consola, abres una ventana de consola, vas a la carpeta donde está tu programa y lo ejecutas. Al finalizar no se cerrará la ventana y podrás ver el resultado de tu programa.</li>
  • Agregas una pausa a tu programa justo antes de finalizar. Para esta pausa puedes usar la instrucción
    Código: Text
    1. system( &#34;pause&#34; );
    2.  
    o, en Turbo C/C++:
    Código: Text
    1. getc();
    2.  
    En donde aparezca esta instrucción, el programa esperará a que el usuario presione alguna tecla para continuar.</li>
Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

ra_mer

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #2 en: Domingo 3 de Septiembre de 2006, 22:59 »
0
Pero el programa tiene varios scanf nada más comenzar, no se tendria que parar ahi???
Porque si hago doble click y el programa tiene un scanf, se parara ahí hasta que escriva un valor y le de al enter?
No es así???

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: Problemas Gcc
« Respuesta #3 en: Domingo 3 de Septiembre de 2006, 23:18 »
0
abrilo desde la consola y fijate si te aparece algun mensaje antes de que se cierre la aplicacion...despues postealo aca

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #4 en: Domingo 3 de Septiembre de 2006, 23:59 »
0
Nop, nop  :P ELF en Windows, nunca a no ser que lo emules...
 :whistling:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

ra_mer

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #5 en: Lunes 4 de Septiembre de 2006, 00:23 »
0
He ejecutado el ejecutable (que redundante) en la ventana de ms-dos, me hace un salto de linea y vuelve a poner lo de :
C:\Documents and Settings\...
No creo que sea lo que tu dices su-, porque al crear el ejecutable em Linux con el gcc creo un .exe y un .exe es universal , no??
Crees con el programa que crees el .exe siempre será el mismo si el codigo fuente no varia. No creo que dos programas distintos creen diferentes .exe
Si no cuando en internet cualgan el codigo fuente, el ejecutable dependeria del compilador.  :unsure:

PD: Cuando digo ejecutable no me refiero a los programas que te bajas por internet que incluso depende del linux que utilices (si es red hat si es debian) me refiero a un .exe creado a partir de un .c

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problemas Gcc
« Respuesta #6 en: Lunes 4 de Septiembre de 2006, 00:31 »
0
Normalmente la estructura de los ejecutables es diferente en cada sistema operativo. A no ser que sean interpretados :).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

ra_mer

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #7 en: Lunes 4 de Septiembre de 2006, 00:32 »
0
y se puede arreglar para que desde el gcc de linux funcione en windows o se a de compilar en windows por wevos.
Tanto puede variar la estructura de un ejecutable, el programa son 50 lineas y de ir de que funcione a que no
 :unsure:

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #8 en: Lunes 4 de Septiembre de 2006, 00:45 »
0
Ha ver, ejecuta desde tu consola (en Gnu/Linux) :
Código: Text
  1. file archivo.exe
  2.  
Claro, el "exe" que haces en Gnu/Linux con GCC.
Si miras bien, es ELF 32 o algo asi, que le pongas extencion "exe" no quiere decir nada, incluso lo que en Windows (si mal no estoy) viene siendo .COM es UNIX es .o y .so (shared objects) y quizas quieras usar ar para cojer todos lo .o/.so y los comprimes (no se si puedas hacer esto en Windows)
Y no, un exe no es universal, por que lo seria?

Citar
PD: Cuando digo ejecutable no me refiero a los programas que te bajas por internet que incluso depende del linux que utilices (si es red hat si es debian) me refiero a un .exe creado a partir de un .c
Pues, cual es la diferencia?
Todos dos se compilan co GCC (CC que es lo mismo) solo que uno lo hace automake y el otro lo haces tu.
Busca en wikipedia elf y con eso tendras  :whistling:
Citar
Tanto puede variar la estructura de un ejecutable, el programa son 50 lineas y de ir de que funcione a que no
Puede ser un "Hello World" y aun asi no funcionaria en WIndows.
RECUERDA: cuando programas en C/C++ o cualquier lenguaje compilable y codigo tiene que ser a gusto del compilador y de la plataforma que corres.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

ra_mer

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #9 en: Lunes 4 de Septiembre de 2006, 01:04 »
0
Piensa que estoy compilando un programa en c no en c++, así que aqui no utlizas ficheros .o o .so ya que no hay objetos como en c++
Despues compilar en gcc es lo mismo que compilar en dev c++ de windows ya que ambos son gcc.
Así que como solo hay un archivo, el .exe ni .o ni .so (no has de comprimir na de na)

Citar
RECUERDA: cuando programas en C/C++ o cualquier lenguaje compilable y codigo tiene que ser a gusto del compilador y de la plataforma que corres.

Si y no, al- en C. Cuando compilas en C en gral. un programa que compila en visual c++, compila en dev , compila en gcc. Y en todos ellos se ejecuta correctamente salvo alguna excepción. Que alguno deje pasar más cosas que otros, no te digo que no. Que depende de dnd corras será más preciso pues tan bien. Pero en gral, el codigo funcionará en todas las plataformas (codigo no ejecutable) si estas utlizando librerias standard y básicas como son el stdio.h y el math.h

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #10 en: Lunes 4 de Septiembre de 2006, 01:35 »
0
:no: Ha de ver, primero que todo, que hayan o no .so .o no implica que sea de C++ bien pude ser de C.
Cita de: "ra_mer"
Despues compilar en gcc es lo mismo que compilar en dev c++ de windows ya que ambos son gcc.
Nada que ver, se trata de OS, del kernel no de compilador, si compilas en BSD y tratas de correrlo en Gnu/Linux no tendras un buen resultado a no ser que uses elf2olf, pero no lo podras correr sin emular ya que tanto las cabeceras como el contenido del ejecutable son diferentes para estas plataformas.
Cita de: "ra_mer"
un programa que compila en visual c++, compila en dev , compila en gcc. Y en todos ellos se ejecuta correctamente salvo alguna excepción. Que alguno deje pasar más cosas que otros, no te digo que no. Que depende de dnd corras será más preciso pues tan bien. Pero en gral, el codigo funcionará en todas las plataformas (codigo no ejecutable) si estas utlizando librerias standard y básicas como son el stdio.h y el math.h
Nop, si miras dependencias hay programas que especifican la version del compilador (sindo el mismo si es mas nuevo o al contrario puede no funcionar ya que el lexer puede cambiar) claro, que esto tambien implica las librerias standars.
Aun asi no podes manejar codigos no-generales tal como decis.
Con todo esto nunca podras correr un ejecutable de Gnu/Linux en Windows a no ser que lo emules.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problemas Gcc
« Respuesta #11 en: Lunes 4 de Septiembre de 2006, 02:31 »
0
Je, parece que estás bastante confundido ra_mer :).
Cita de: "ra_mer"
Piensa que estoy compilando un programa en c no en c++, así que aqui no utlizas ficheros .o o .so ya que no hay objetos como en c++
Nop, no estamos hablando de "objetos" = clases, sino de código objeto, código en el formato de la computadora/arquitectura/sistema operativo en que estás trabajando.

Cita de: "ra_mer"
Despues compilar en gcc es lo mismo que compilar en dev c++ de windows ya que ambos son gcc.
Así que como solo hay un archivo, el .exe ni .o ni .so (no has de comprimir na de na)
A ver, MinGW es un port de GCC, efectivamente. Pero una cosa es que un mismo código fuente pueda ser compilado en ambos compiladores (GCC y MinGW, de hecho, si se trata de C/C++ estándar, debiera compilar en cualquier otro compilador que lo soporte), y otra MUY diferente es que el ejecutable resultante (ya enlazado) pueda correrse en ambas plataformas, eso no es posible (a menos, como mencioné, que se trate de un código interpretado como Java, no compilado/enlazado como C/C++).

Cita de: "ra_mer"
Citar
RECUERDA: cuando programas en C/C++ o cualquier lenguaje compilable y codigo tiene que ser a gusto del compilador y de la plataforma que corres.

Si y no, al- en C. Cuando compilas en C en gral. un programa que compila en visual c++, compila en dev , compila en gcc. Y en todos ellos se ejecuta correctamente salvo alguna excepción. Que alguno deje pasar más cosas que otros, no te digo que no. Que depende de dnd corras será más preciso pues tan bien. Pero en gral, el codigo funcionará en todas las plataformas (codigo no ejecutable) si estas utlizando librerias standard y básicas como son el stdio.h y el math.h
Aquí reafirmas lo que te he dicho arriba, pero ten claro que una cosa es un código fuente escrito en C/C++ estándar que pueda compilarse en diferentes compiladores, y otra el código objeto y/o ejecutables resultantes tras compilar dicho código fuente, el cual NO puede ejecutarse en diferentes plataformas (si lo compilaste para Windows, pues sólo corre en Windows), a menos que lo emules :P.

Una opción interesante, puede ser trabajar en Linux, compilar con GCC. Y, para crear ejecutables para Windows, instalar MinGW en Linux y "cros-compilar" aplicaciones Windows desde Linux (si, compilar ejecutables para Windows desde Linux es posible con MinGW/Linux), pero para probar dichos programas en Linux deberás hacerlo mediante un emulador, como Wine.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: Problemas Gcc
« Respuesta #12 en: Lunes 4 de Septiembre de 2006, 05:28 »
0
Cita de: "ra_mer"
Piensa que estoy compilando un programa en c no en c++, así que aqui no utlizas ficheros .o o .so ya que no hay objetos como en c++
Los *.so no son objetos, son librerías para GNU/Linux... lo que en Windows son los DLLs. :P

Citar
un programa que compila en visual c++, compila en dev , compila en gcc. Y en todos ellos se ejecuta correctamente salvo alguna excepción. Que alguno deje pasar más cosas que otros, no te digo que no. Que depende de dnd corras será más preciso pues tan bien. Pero en gral, el codigo funcionará en todas las plataformas (codigo no ejecutable) si estas utlizando librerias standard y básicas como son el stdio.h y el math.h
Dev-C++ es un IDE, no cabe aquí, ya que la "guerra" es entre compiladores: Visual C++, GCC, Borland, Intel C++ Compiler... :D

Si usas librerías/funciones estándares tu programa se va a ejecutar en donde quieras sin ningún problema. Pero si usas MFC (de Visual C++), o librerías como graphics (de Borland), tu programa no se ejecutará más que en Windows y solamente si tienes los archivos necesarios. :whistling:

Cita de: ""Geo""
"cros-compilar" aplicaciones Windows desde Linux (si, compilar ejecutables para Windows desde Linux es posible con MinGW/Linux), pero para probar dichos programas en Linux deberás hacerlo mediante un emulador, como Wine.
cros-compilar :think:

"Compilado multiOS/plataforma". :D

Wine no es un emulador, los emuladores son Qemu y VMware. :whistling:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problemas Gcc
« Respuesta #13 en: Lunes 4 de Septiembre de 2006, 05:44 »
0
Cita de: "X.Cyclop"
"Compilado multiOS/plataforma". :D
Ok, "cross-compiling" :P.
 
Cita de: "X.Cyclop"
Wine no es un emulador, los emuladores son Qemu y VMware. :whistling:
Cierto.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip