- Código: Seleccionar todo
archivos.c: En la función ‘cargar_participantes’:
archivos.c:36: aviso: variable ‘f2’ sin usar
archivos.c:36: aviso: variable ‘f1’ sin usar
archivos.o: In function `cargar_participantes':
/home/jesus/programa seleccion competidores/archivos.c:34: multiple definition of `lista_participantes'
main.o:/home/jesus/programa seleccion competidores/main.c:41: first defined here
collect2: ld devolvió el estado de salida 1
make: *** [Random_selection_competitors] Error 1
Voy a poneros en varios code cada uno de los archivos por si asi podeis ayudarme a encontrar el problema con más facilidad. Por si alguien lo va a preguntar, no es un juego, es un programa que estoi haciendo que carga una lista de nombre y una ruta a una imagen de un archivo en formato csv para despues de forma aleatoria seleccionarlos de dos en dos (como en las competiciones de la tele donde seleccionan al promero de forma aleatoria y al segundo igual).
archivos.c
- Código: Seleccionar todo
/*
Random selection of competitors Copyright (C) 2009 Jesús Hernández Gormaz
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- Código: Seleccionar todo
Este programa es software libre. Puede redistribuirlo y/o
modificarlo bajo los términos de la Licencia Pública General
de GNU según es publicada por la Free Software Foundation,
bien de la versión 3 de dicha Licencia o bien (según su
elección) de cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea
útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
Pública General de GNU.
Debería haber recibido una copia de la Licencia Pública
General junto con este programa. En caso contrario, escriba
a la Free Software Foundation, Inc., en 675 Mass Ave,
Cambridge, MA 02139, EEUU.
*/
- Código: Seleccionar todo
#include "archivos.h"
int cargar_participantes(char *ruta_archivo){
enum estado {espera, leyendo_participante, leyendo_rutaimagen} estado=espera;
register int r=0, f1=0, f2=0;
char cl[101];
participante *participantes, *p_temporal;
if(ruta_archivo != NULL){
FILE *archivo;
archivo= fopen(ruta_archivo, "r");
if(archivo != NULL){
while(fscanf(archivo, "%s", &cl[0]) != EOF){
/*comprobando el estado de la carga*/
switch(estado){
- Código: Seleccionar todo
/*si el estado es de leyendo participante, se concatena la cadena leida del archivo
en el nombre del participante dejando un espacio, mientras la cadena leida sea diferente de ';'*/
case leyendo_participante: if(cl[0] == ';'){
estado= leyendo_rutaimagen;
}else{
strcat(&(p_temporal->nombre[0]), " \0");
strcat(&(p_temporal->nombre[0]), &cl[0]);
}
break;
/*copiando el nombre de archivo leido a la ruta del nuevo usuario*/
case leyendo_rutaimagen: strcpy(&(p_temporal->ruta_imagen[0]), &cl[0]);
estado= espera;
/*aqui iria el codigo para cargar la imagen*/
/*añadiendo al participante a la lista de participantes*/
- Código: Seleccionar todo
if(participantes == NULL){
p_temporal->siguiente= p_temporal;
p_temporal->anterior= p_temporal;
participantes= p_temporal;
}else{
p_temporal->siguiente= participantes->siguiente;
p_temporal->anterior= participantes;
(participantes->siguiente)->anterior= p_temporal;
participantes->siguiente= p_temporal;
participantes= p_temporal;
}
break;
/*si el estado es de espera, reservamos memoria para un nuevo participante y comenzamos a cargarlo*/
- Código: Seleccionar todo
case espera: p_temporal= (participante *) malloc(sizeof(participante));
/*copiando la cadena leida del archivo al nombre del nuevo participante*/
strcpy(&(p_temporal->nombre[0]), &cl[0]);
estado= leyendo_participante;
break;
default: break;
}
}
fclose(archivo);
}else{
r=2;
printf("Error abriendo archivo %s\n", ruta_archivo);
}
}else{
r=1;
}
lista_participantes= participantes->siguiente;
return r;
}
archivos.h
- Código: Seleccionar todo
/*
Random selection of competitors Copyright (C) 2009 Jesús Hernández Gormaz
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Este programa es software libre. Puede redistribuirlo y/o
modificarlo bajo los términos de la Licencia Pública General
de GNU según es publicada por la Free Software Foundation,
bien de la versión 3 de dicha Licencia o bien (según su
elección) de cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea
útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
Pública General de GNU.
Debería haber recibido una copia de la Licencia Pública
General junto con este programa. En caso contrario, escriba
a la Free Software Foundation, Inc., en 675 Mass Ave,
Cambridge, MA 02139, EEUU.
*/
- Código: Seleccionar todo
/*evitando que se vuelva a compilar este archivo de cabecera en un programa en C*/
#ifndef _ARCHIVOS_
#define _ARCHIVOS_
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "main.h"
#include "tipos_listas.h"
/*declaracion de funciones*/
/* carga la lista de competidores con las categorias en las que participa cada uno,
genera ademas de la lista de participantes la lista de categorias distintas que existan en total*/
int cargar_participantes(char *ruta_archivo);
#endif
tipos_listas.h
- Código: Seleccionar todo
/*
Random selection of competitors Copyright (C) 2009 Jesús Hernández Gormaz
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Este programa es software libre. Puede redistribuirlo y/o
modificarlo bajo los términos de la Licencia Pública General
de GNU según es publicada por la Free Software Foundation,
bien de la versión 3 de dicha Licencia o bien (según su
elección) de cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea
útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
Pública General de GNU.
Debería haber recibido una copia de la Licencia Pública
General junto con este programa. En caso contrario, escriba
a la Free Software Foundation, Inc., en 675 Mass Ave,
Cambridge, MA 02139, EEUU.
*/
- Código: Seleccionar todo
/*evitando que se vuelva a compilar este archivo de cabecera en un programa en C*/
#ifndef _TIPOS_LISTAS_
#define _TIPOS_LISTAS_
/*declaracion de tipos de datos nuevos*/
/* estructura de un elemento de la lista de categorias*/
typedef struct categoria{
char nombre[101];
float puntuacion;
struct categoria *siguiente;
struct categoria *anterior;
} categoria;
/* estructura de un elemento de la lista de participantes*/
typedef struct participante{
char nombre[101];
unsigned int edad;
categoria categorias[100];
char ruta_imagen[201];
/*falta linea para guardar la imagen una vez cargada del archivo*/
struct participante *siguiente;
struct participante *anterior;
} participante;
- Código: Seleccionar todo
/* estructura de un elemento de la lista de referencias de participantes.
con esta estructura se puede hacer una lista con los elementos de
una lista de participantes sin modificar la posicion de los
elementos en la lista original y podiendo cambiar la posicion en
la lista que hace referencia a elementos de la lista original y
podiendo alterar las propiedades de los elementos desde la lista
de referencias, esto tambien permite el ahorro de memoria RAM al
no necesitar copiar elementos de una lista en otra lista nueva
y ahorra procesamiento al no tener que actualizar despues los
cambios de la lista nueva en los elementos de la original*/
typedef struct referencia_participante{
participante *referencia;
struct referencia_participante *siguiente;
struct referencia_participante *anterior;
} referencia_participante;
/* estructura de una lista de referencias a participantes de una categoria.
con esta estructura se puede hacer una lista de participantes de una
categoria sin modificar la posicion de los mismos en la lista original
con todos los participantes de todas las categorias, podiendo alterar
las propiedades de los elementos desde la lista de referencias.*/
typedef struct lista_referencia_participantes_categoria{
categoria *categoria;
referencia_participante *primero;
referencia_participante *participantes;
} lista_referencia_participantes_categoria;
#endif
main.c
- Código: Seleccionar todo
/*
Nombre del programa: Random selection of competitors
Version: 0.0.0.0
Descripcion del programa: Selecciona parejas de competidores de una lista de forma aleatoria.
Autor del programa: Jesús Hernández Gormaz
Correo electronico del autor: elrinconjhg@gmail.com
Pagina web del autor: http://www.elrinconjhg.ya.st/
Random selection of competitors Copyright (C) 2009 Jesús Hernández Gormaz
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Este programa es software libre. Puede redistribuirlo y/o
modificarlo bajo los términos de la Licencia Pública General
de GNU según es publicada por la Free Software Foundation,
bien de la versión 3 de dicha Licencia o bien (según su
elección) de cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea
útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
Pública General de GNU.
Debería haber recibido una copia de la Licencia Pública
General junto con este programa. En caso contrario, escriba
a la Free Software Foundation, Inc., en 675 Mass Ave,
Cambridge, MA 02139, EEUU.
*/
- Código: Seleccionar todo
#include "main.h"
int main(int argc, char *argv[]){
register int r=0;
cargar_participantes("lista_competidores.csv");
printf("Nombre: %s\n", &(lista_participantes->nombre[0]));
liberar_lista();
return r;
}
- Código: Seleccionar todo
int liberar_lista(void){
register int r=0;
participante *a_borrar_p, *auxiliar_p;
a_borrar_p= lista_participantes->siguiente;
do{
if(a_borrar_p == lista_participantes){
free(a_borrar_p);
lista_participantes= NULL;
}else{
auxiliar_p= a_borrar_p->siguiente;
free(a_borrar_p);
a_borrar_p= auxiliar_p;
}
}while(lista_participantes != NULL);
return r;
}
main.h
- Código: Seleccionar todo
/*
Random selection of competitors Copyright (C) 2009 Jesús Hernández Gormaz
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Este programa es software libre. Puede redistribuirlo y/o
modificarlo bajo los términos de la Licencia Pública General
de GNU según es publicada por la Free Software Foundation,
bien de la versión 3 de dicha Licencia o bien (según su
elección) de cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea
útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
Pública General de GNU.
Debería haber recibido una copia de la Licencia Pública
General junto con este programa. En caso contrario, escriba
a la Free Software Foundation, Inc., en 675 Mass Ave,
Cambridge, MA 02139, EEUU.
*/
- Código: Seleccionar todo
/*evitando que se vuelva a compilar este archivo de cabecera en un programa en C*/
#ifndef _MAIN_
#define _MAIN_
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>
#include "tipos_listas.h"
#include "archivos.h"
#include "GNA_JHG.h"
- Código: Seleccionar todo
/*declaracion de macros y constantes*/
#define NOM "Random selection of competitors"
#define VER "0.0.0.0"
/*detectando el sistema en el que se esta compilando*/
#ifndef SO
#ifdef linux
#define SO "GNU/Linux"
#endif
#endif
#ifndef SO
#ifdef __linux__
#define SO "GNU/Linux"
#endif
#endif
#ifndef SO
#ifdef unix
#define SO "Unix"
#endif
#endif
#ifndef SO
#ifdef __unix__
#define SO "Unix"
#endif
#endif
#ifndef SO
#ifdef WIN32
#define SO "Windows"
#endif
#endif
#ifndef SO
#define SO "desconocido"
#endif
/* fin de la deteccion del sistema en el que se esta compilando*/
- Código: Seleccionar todo
/*variables globales*/
participante *lista_participantes=NULL;
char titulo_campeonato[101];
- Código: Seleccionar todo
/*declaracion de funciones*/
/* libera todos los elementos de la lista de participantes y de categorias*/
int liberar_lista(void);
#endif
GNA_JHG.h
- Código: Seleccionar todo
/*
Nombre: Generador de numeros aleatorios JHG
Copyright:
Autor: Jesús Hernández Gormaz
Fecha: Lunes 25 de Agosto del 2008
Descripcion: Funciones para la generacion de numeros verdaderamente aleatorios (no cuasi-aleatorios)
y de comprobacion del funcionamiento del generador de numeros aleatorios.
*/
/*devuelve un byte aleatorio a partir de varios bytes aleatorios de forma que aumenta la calidad del byte aleatorio devuelto*/
unsigned char Byte_Aleatorio(void);
/*devuelve un byte pseudoaleatorio*/
unsigned char Byte_Pseudoleatorio(void);
/*comprueba el correcto funcionamiento del generador de numeros aleatorios*/
int Comprobar_Generador_Numeros_Aleatorios(void);
GNA_JHG.c
- Código: Seleccionar todo
/*
Nombre: Generador de numeros aleatorios JHG
Copyright:
Autor: Jesús Hernández Gormaz
Fecha: Lunes 25 de Agosto del 2008
Descripcion: Funciones para la generacion de numeros verdaderamente aleatorios (no cuasi-aleatorios)
y de comprobacion del funcionamiento del generador de numeros aleatorios.
Tambien inclulle una funcion para obtener numeros pseudoaleatorios (cuasi-aleatorios)
tomando como semillas numeros aleatorios obtenidos con las funciones de numeros aleatorios.
*/
- Código: Seleccionar todo
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include "GNA_JHG.h"
/*Genera un byte aleatorio mediante la recogida y tratamiento de bits aleatorios*/
unsigned char Byte_Aleatorio_Recogida(void);
/*comprueba si el buffer de bytes aleatorios pasa el test de monobit*/
int Test_monobit(unsigned char *buffer);
/*comprueba si el buffer de bytes aleatorios pasa el test de poker*/
int Test_poker(unsigned char *buffer);
/*comprueba si el buffer de bytes aleatorios pasa el test de runs*/
int Test_runs(unsigned char *buffer);
/*comprueba si el buffer de bytes aleatorios pasa el test de longrun*/
int Test_longrun(unsigned char *buffer);
/*pasa un buffer de bytes aleatorios por todos los tests disponibles*/
int Comprobar_Tests(void);
- Código: Seleccionar todo
unsigned char Byte_Aleatorio_Recogida(void){
/*variables para la recogida de bits aleatorios*/
unsigned char c[32];
unsigned int u[32];
unsigned int b[32];
unsigned long e;
unsigned long *a;
unsigned int i;
/*variables de control*/
unsigned long o=0;
/*recogida de bits aleatorios y tratamiento rapido*/
i+= ((clock() % 101) + 1);
if(e != 0 && i != 0){
i+= e;
i++;
}
i+= ((clock() % 65000) + 3);
a= malloc(64 * sizeof(long));
if(a != NULL){
for(e=0; e < 64; e++){
if(*(a + e) != 0){
o++;
i+= (*(a + e));
}
}
i+= o;
free(a);
}
for(e=0; e < 32; e++){
if(u[e] != 0){
i+= u[e];
}
}
i+= ((clock() % 65000) + 3);
for(e=0; e < 32; e++){
if(b[e] != 0){
i+= b[e];
}
}
o= 0;
e= clock();
while(o < 2 && o >= 0){
o= (clock() - e);
}
i+= ((clock() % 32500) + 3);
for(e=0; e < 32; e++){
if(c[e] != 0){
i+= c[e];
}
}
- Código: Seleccionar todo
/*tratamiento de los bits recogidos*/
i= i % 256;
return (unsigned char)i;
}
- Código: Seleccionar todo
/*devuelve un byte aleatorio a partir de bytes aleatorios formados por la recogida de bits aleatorios, de forma que incrementa la calidad del byte aleatorio devuelto*/
unsigned char Byte_Aleatorio(void){
static unsigned char n=0, r=0;
register unsigned char nn=0, nr;
if(n == 0){
n= Byte_Aleatorio_Recogida();
}
if(r == 0){
r= Byte_Aleatorio_Recogida();
}
for(nr=0; nr < r; nr++){
nn= Byte_Aleatorio_Recogida();
}
r= (r + nn) % 255;
r= (r * r) % n;
return r;
}
- Código: Seleccionar todo
/*devuelve un byte pseudoaleatorio*/
unsigned char Byte_Pseudoleatorio(void){
static unsigned char n=0, r=0, i=0;
if((n == 0 && i == 0) || i == 1000){
n= Byte_Aleatorio_Recogida();
}
if((r == 0 && i == 0) || i == 1000){
r= Byte_Aleatorio_Recogida();
}else{
r= (r * r) % n;
}
i++;
return r;
}
- Código: Seleccionar todo
int Test_monobit(unsigned char *buffer){
register int unos=0,i,j;
register unsigned char ch;
for (i=0; i<2500; i++){
for (j=0; j<8; j++){
if ((((*(buffer+i)) >> (j)) & 1)) unos++;
}
}
if (9725<unos && unos<10275) return 0;
else return 1;
}
- Código: Seleccionar todo
int Test_poker(unsigned char *buffer){
int f[16];
register int i;
register unsigned char ch;
register float x;
for (i=0; i<16; i++) f[i]=0;
for (i=0; i<2500; i++) {
ch=*(buffer+i);
f[(((ch)>>4)&0xF)]++;
f[((ch)&0xF)]++;
}
x=0.0;
for (i=0; i<16; i++)
x += f[i]*f[i];
x = (x*16.0/5000.0)-5000.0;
if (2.16< x && x<46.17) return 0;
else return 1;
}
- Código: Seleccionar todo
int Test_runs(unsigned char *buffer){
register int i,j,cuenta;
int r[6][2];
register unsigned char ch;
for(i=0; i<6; i++) {
r[i][0]=0;
r[i][1]=0;
}
ch=(((*buffer) >> (0)) & 1);
cuenta=0;
for (i=0; i<2500; i++) {
for (j=0; j<8; j++) {
if ((((*(buffer+i)) >> (j)) & 1)==ch) cuenta++;
else {
if(cuenta>6){
cuenta=6;
}
r[cuenta-1][ch]++;
ch = !ch;
cuenta=1;
}
}
}
if(cuenta>6){
cuenta=6;
}
r[cuenta-1][ch]++;
for(i=0; i<2; i++){
if (r[0][i]<2343 || r[0][i]>2657) return 1;
if (r[1][i]<1135 || r[1][i]>1365) return 1;
if (r[2][i]< 542 || r[2][i]> 708) return 1;
if (r[3][i]< 251 || r[3][i]> 373) return 1;
if (r[4][i]< 111 || r[4][i]> 201) return 1;
if (r[5][i]< 111 || r[5][i]> 201) return 1;
}
return 0;
}
- Código: Seleccionar todo
int Test_longrun(unsigned char *buffer){
register int i,j,maxc=-1,cuenta;
register unsigned char ch;
ch=(((*buffer) >> (0)) & 1);
cuenta=0;
for (i=0; i<2500; i++) {
for (j=0; j<8; j++) {
if ((((*(buffer+i)) >> (j)) & 1)==ch) cuenta++;
else {
if (cuenta>maxc) maxc=cuenta;
ch=!ch;
cuenta=1;
}
}
}
if (cuenta>maxc) maxc=cuenta;
if (maxc>=26) return 1;
else return 0;
}
- Código: Seleccionar todo
int Comprobar_Tests(void){
register int r=0, l;
unsigned char buffer[2500];
for(l=0; l<2500; l++){
buffer[l]= Byte_Aleatorio();
}
r+= Test_longrun(&buffer[0]);
r+= Test_runs(&buffer[0]);
r+= Test_poker(&buffer[0]);
r+= Test_monobit(&buffer[0]);
return r;
}
- Código: Seleccionar todo
/*comprueba el correcto funcionamiento del generador de numeros aleatorios*/
int Comprobar_Generador_Numeros_Aleatorios(void){
register int r=0;
while(Comprobar_Tests() != 0 && r < 6){
r++;
}
if(r < 5){
r= 0;
}
return r;
}
Makefile
- Código: Seleccionar todo
# Archivo make de compilacion de Random selection of competitors en su version 0.0.0.0
#
# Random selection of competitors Copyright (C) 2009 Jesús Hernández Gormaz
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Este programa es software libre. Puede redistribuirlo y/o
# modificarlo bajo los términos de la Licencia Pública General
# de GNU según es publicada por la Free Software Foundation,
# bien de la versión 3 de dicha Licencia o bien (según su
# elección) de cualquier versión posterior.
# Este programa se distribuye con la esperanza de que sea
# útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
# MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
# PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
# Pública General de GNU.
# Debería haber recibido una copia de la Licencia Pública
# General junto con este programa. En caso contrario, escriba
# a la Free Software Foundation, Inc., en 675 Mass Ave,
# Cambridge, MA 02139, EEUU.
- Código: Seleccionar todo
CC=gcc
CFLAGS=-Wall -ggdb
#CFLAGS=-L/usr/lib -lSDL -lSDL_image -lSDL_mixer -lpthread -I/usr/include/SDL -D_REENTRANT -Wall -g
- Código: Seleccionar todo
Random_selection_competitors: main.o archivos.o GNA_JHG.o
$(CC) $(CFLAGS) -o $@ $^
main.o: main.c
$(CC) $(CFLAGS) -c -o $@ $^
archivos.o: archivos.c
$(CC) $(CFLAGS) -c -o $@ archivos.c
GNA_JHG.o: GNA_JHG.c
$(CC) $(CFLAGS) -c -o $@ $^
- Código: Seleccionar todo
# Archivos con funciones que devuelven una superficie SDL con la
# imagen que tengan guardada en una estructura estatica constante
# dentro de dicha funcion.
#
# Logo de licencia GPL version 3.
logo_gpl3.o: logo_gpl3.c
$(CC) $(CFLAGS) -c -o $@ $^
# Logo de SDL
logo_SDL.o: logo_SDL.c
$(CC) $(CFLAGS) -c -o $@ $^
# Logo de OpenGL
logo_OpenGL.o: logo_OpenGL.c
$(CC) $(CFLAGS) -c -o $@ $^
# Tux, logo de Linux
tux_bwt.o: tux_bwt.c
$(CC) $(CFLAGS) -c -o $@ $^
.SILENT:
Como habreis visto en el codigo, hay algunas estructuras o algunas partes de las estructuras que no se usan, es por que el programa aun estoi comenzandolo y ya me encontre el problema al compilarlo; tambien es porque aunque ahora lo estoi haciendo como un programa para poder acabarlo lo antes posible porque necesito acabarlo pronto, despues tengo pensado usar la mayoria de las funciones de este programa en otro programa haciendo que lo que ahora tiene que hacer el programa sea una funcionalidad mas del otro programa donde en el futuro tengo pensado incorporarlo. El codigo del archivo GNA_JHG.c no creo que tenga nada que ver con el problema pues ese codigo ya lo he usado en otros programas y funciona me ha funcionado bien.
No he podido usar gdb por como no he podido compilarlo como ya os dije, por lo que si alguien sabe el problema, me seria de mucha ayuda.
Gracias de antemano.