Error compilando con SNL

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

Error compilando con SNL

Notapor lacabra25 » Dom Abr 05, 2009 5:05 pm

Hola, como ya he comentado en otro tema la biblioteca SNL ya esta lista para usarse en su version 0.0.0 (en esta semana acabare con los ultimos detalles como hacer un pequeño web en donde ponerla para descargar y me acabare la documentación), ya tengo el makefile que la compila (ya tengo arreglada la compilación condicional para que pueda compilarse para GNU/Linux y para windows) y otro makefile que se encarga de llamar a esste primero para compilarla y de mover los archivos .h y los .a a su correspondiente carpeta del sistema (/usr/lib para el .a y /usr/include/SNL para el .h tal y como queda el archivo de cabecera de SDL, pues igual) ahora el problema llega cuando intento compilar un programa de ejemplo enlazando SNL de la misma forma que si usara SDL. Dejo a continuacion como incluyo SNL.h en el programa de ejemplo, el makefile que se encarga de instalar SNL (para que veais en que carpetas coloca los archivos) y el makefile del programa de ejemplo que intento compilar:

testSNL.c (inclullendo todos los archivos de cabecera necesarios)
Código: Seleccionar todo
#include <stdio>
#include <string>
#include <SNL>


este makefile es el que manda ejecutar el makefile que compila SNL y mueve el .a y el .h a la carpeta del sistema apropiada (y crea la carpeta SNL dentro de la que coloca el .h tal y como lo hace SDL)
Código: Seleccionar todo
all:
   @echo Compilando SNL
   $(MAKE) -C ./src/

install:
   @echo Compilando SNL
   $(MAKE) -C ./src/
   @echo Copiando los archivos de SNL a las carpetas del sistema apropiadas
   mv ./lib/libSNL.a /usr/lib/
   mkdir /usr/include/SNL
   mv ./include/SNL/SNL.h /usr/include/SNL/
   @echo Compilando un programa de ejemplo
   $(MAKE) -C ./test/

uninstall:
   @echo Eliminando los archivos de SNL del sistema
   $(RM) /usr/lib/libSNL.a
   $(RM) /usr/include/SNL/SNL.h
   rmdir /usr/include/SNL


Este es el makefile que se encarga de compilar el programa de ejemplo
Código: Seleccionar todo
#### Start of system configuration section. ####
CC=gcc
#### End of system configuration section.   ####

CFLAGS=-L/usr/lib -lSNL -I/usr/include/SNL

testSNL: testSNL.o
   $(CC) $(CFLAGS) -o $@ $^

testSNL.o: testSNL.c
   $(CC) $(CFLAGS) -c -o $@ $^


El error que recibo en la terminal al intentar compilar el programa de ejemplo es el siguiente:
Código: Seleccionar todo
gcc -L/usr/lib -lSNL -I/usr/include/SNL -c -o testSNL.o testSNL.c
gcc -L/usr/lib -lSNL -I/usr/include/SNL -o testSNL testSNL.o
testSNL.o: In function `main':
testSNL.c:(.text+0x35): undefined reference to `informacion_biblioteca_SNL'
testSNL.c:(.text+0x99): undefined reference to `SNL_DNS'
testSNL.c:(.text+0xc0): undefined reference to `SNL_DNS_IPv4'
testSNL.c:(.text+0x162): undefined reference to `SNL_conectar_TCP_IPv4'
testSNL.c:(.text+0x186): undefined reference to `SNL_nuevo_grupo_conexiones'
testSNL.c:(.text+0x19f): undefined reference to `SNL_nueva_conexion_grupo'
testSNL.c:(.text+0x1c5): undefined reference to `SNL_enviar_grupo_TCP'
testSNL.c:(.text+0x1e9): undefined reference to `SNL_tiempo_espera_grupo'
testSNL.c:(.text+0x1f5): undefined reference to `SNL_comprobar_grupo_conexiones'
testSNL.c:(.text+0x20b): undefined reference to `SNL_tiempo_espera_grupo'
testSNL.c:(.text+0x229): undefined reference to `SNL_recibir_TCP'
testSNL.c:(.text+0x24f): undefined reference to `SNL_comprobar_grupo_conexiones'
testSNL.c:(.text+0x260): undefined reference to `SNL_conexion_activa_grupo_conexiones'
testSNL.c:(.text+0x274): undefined reference to `SNL_cerrar_grupo_conexiones'
testSNL.c:(.text+0x2a5): undefined reference to `EncriptarTexto_CifradoBitsIguales'
collect2: ld devolvió el estado de salida 1
make: *** [testSNL] Error 1


He comprobado si el makefile que instala SNL coloca correctamente los archivos y el archivo libSNL.a esta en /usr/lib por lo que esta en la localización correcta y SNL.h esta en /usr/include/SNL por lo que tambien esta en la localización correcta.

Gracias de antemano por la ayuda para poder compilar el programa de ejemplo y saber como compilar com SNL.

Edito:
He conseguido compilar el programa de ejemplo al final, lo uncico que hice fue quitar -lSNL de CFLAGS y ponerlo justo despues de testSNL.o del siguiente modo:

Código: Seleccionar todo
#### Start of system configuration section. ####
CC=gcc
#### End of system configuration section.   ####

CFLAGS=-L/usr/lib -I/usr/include/SNL

testSNL: testSNL.o
   $(CC) $(CFLAGS) -o $@ $^ -lSNL

testSNL.o: testSNL.c
   $(CC) $(CFLAGS) -c -o $@ $^


Una ultima pregunta, ¿por que me daba error al ponerlo como una justo despues de donde indicaba donde estaba el directorio con las bibliotecas (como hago cuando compilo con SDL)?
Esta cuenta ahora a pasado a la cuenta jhg
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)

Notapor Juanxo » Dom Abr 05, 2009 6:20 pm

No me hagas muxo caso lacabra, porque no tengo apenas idea, pero no puede que sea debido a que tienes que añadir una serie de comandos a la linea de comandos en el linker como con SDL( o por lo menos a mi me daba error en el DEV-C++) hasta que hice lo de añadir esos comandos al linker, siguiendo un tutorial de loserjuegos
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Notapor Juanxo » Lun Abr 06, 2009 2:09 am

Por cierto lacabra, en cuanto a lo de alojar tu proyecto, podrias hablar con hugo para que lo suba a la seccion de ejemplos o algo del estilo
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Notapor lacabra25 » Lun Abr 06, 2009 7:10 pm

Juanxo escribió:Por cierto lacabra, en cuanto a lo de alojar tu proyecto, podrias hablar con hugo para que lo suba a la seccion de ejemplos o algo del estilo


Como tengo conocimientos de HTML, XHTMl y PHP me he puesto a crear una web para la biblioteca desde la que descargarla, descargar la documentacion por separado de la biblioteca, un formulario para dudas sobre la biblioteca, y cosas por ese estilo; por lo que a ver si en esta semanita de vacaciones termino de escribir la documentacion para colgar todo en un servidor gratuito que ya conozco; ya comence a escribir los primeros archivos del web para con php hacerlo como esos que llaman modulares. En cuanto a la documentacion, en un dia o dos espero tenerla acabada, tampoco es una documentacion con explicaciones a fondo sino más bien para mostrar todas las funciones que tiene y los tipos de datos y estructuras que tiene y para que sirve cada cual y como usarlo, no es demasiado detallada. Como lo más seguro es que en esta semana la tenga ya acabada y colgada, cuando la cuelgue os aviso por si ha alguno le interesa echarle una ojeada.
Esta cuenta ahora a pasado a la cuenta jhg
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado