Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Crear un ejecutable a partir de otros dos

Estas en el tema de Crear un ejecutable a partir de otros dos en el foro de C/C++ en Foros del Web. Buenas, Tengo un problemilla y a ver si le sé explicar y ustedes responder xD. Tengo 2 ficheros .c: p1.c p2.c. Éstos contienen otros ficheros ...
  #1 (permalink)  
Antiguo 12/06/2008, 06:02
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Crear un ejecutable a partir de otros dos

Buenas,
Tengo un problemilla y a ver si le sé explicar y ustedes responder xD.
Tengo 2 ficheros .c: p1.c p2.c. Éstos contienen otros ficheros .c y .h comunes, lo que hace que no pueda de ninguna forma incluir p1.c y p2.c en otro principal y compilar este último.

La primera solución que apliqué fue crear un ejecutable principal, e invocar primero al ejecutable de p1.c y después al de p2.c mediante la sentencia "system".
Esta solución funcionaba hasta hoy, que me piden un sólo ejecutable que realice todo lo que hacían p1 y p2.

¿Se os ocurrec alguna forma de resolverlo?

Muchas gracias!

Por cierto, uso lenguaje C. No C++
  #2 (permalink)  
Antiguo 12/06/2008, 06:36
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: Crear un ejecutable a partir de otros dos

Suponiendo que para compilar usas un comando como este:

Código:
gcc fuente -o archivoEjecutable
podrias intentar hacer algo como

Código:
gcc fuente1.c fuente2.c -o archivoEjecutable
Suerte! y cualquier cosa da más información o investiga sobre tu compilador. Si estas sobre linux usar el comando MAN no te quemará las manos :)
__________________
Saludoss
Guille
  #3 (permalink)  
Antiguo 12/06/2008, 07:07
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Crear un ejecutable a partir de otros dos

Creo q no me expliqué del todo bien, re-empiezo xD:
Uso gcc sobre LINUX.
Mi problema es que tanto p1.c como p2.c incluyen ficheros generados por otras herramientas, y por tanto tienen declaradas variables globales y estructuras con los mismos nombres, pero con diferentes usos. Por esa razón hice dos ejecutables distintos.

Pienso que la solución no va por compilarlos juntos, sino más bien hacer depender los ejecutables de alguna manera. ¿Quizás como librerías o algo así?. De tal manera que, al final obtenga un sólo ejecutable.
  #4 (permalink)  
Antiguo 12/06/2008, 09:51
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: Crear un ejecutable a partir de otros dos

Si declaras tus variables globales static no se compartirán entre los fuentes.... ¿Eso te sirve?
__________________
Saludoss
Guille
  #5 (permalink)  
Antiguo 13/06/2008, 03:28
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Crear un ejecutable a partir de otros dos

Juer, me ha costado la vida hacer que corra, pero me sirvió!! muchas gracias!
Y una dudilla rápida.
En un momento de la ejecución lanzo un programa mediante:
system("programa");
Si ese programa ejecuta un exit(-1) lo puedo capturar? es decir, puedo detectar si ha acabado correctamente o mediante exit(-1)?
  #6 (permalink)  
Antiguo 13/06/2008, 03:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: Crear un ejecutable a partir de otros dos

Si lo lanzas con system() lo único que puedes saber es si se lanza o no. Pero no vas a poder saber si el programa lanzado acaba bien o mal.
Para controlar la ejecución de un programa debes lanzarlo como un programa hijo mediante las funciones fork()+execv() y luego añadir un tratamiento para las señales que pueda enviar el hijo: SIGCHLD, SIGTERM, SIGINT, y a veces también SIGHUP. No es algo trivial.
__________________
Pop & Rock Bands
Pop Music Stars
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:07.