1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

undefined reference to....

Discussion in 'C' started by crapodino, Jan 14, 2008.

  1. crapodino

    crapodino New Member

    Joined:
    Jan 12, 2008
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Hi! i am trying to compile/link a simple application that uses a library called OpenDBX. I have already compiled and installed that library. Now, i am trying to do a simple client of it.

    The client (Prueba.c) is just like this:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <odbx.h>
    
    int main(void) {
    	puts("Hello World!!");
    	
    		int err;
    		odbx_t* handle;
    	
    		if( ( err = odbx_init( &handle, "mysql", "127.0.0.1", "" ) ) < 0 )
    		{
    		    fprintf( stderr, "odbx_init(): %s\n", odbx_error( handle, err ) );
    		    return err;
    		}
    		
    		return EXIT_SUCCESS;
    }


    When i try to compile that program (Prueba.c), i has this error:

    cc -c -o Prueba.o Prueba.c
    gcc -O2 -g -Wall -fmessage-length=0 -L/usr/local/lib -L/usr/local/lib/opendbx -L/usr/local/lib/pkgconfig -o Pruebas Prueba.o
    Prueba.o: In function `main':
    Prueba.c:(.text+0x3c): undefined reference to `odbx_init'
    Prueba.c:(.text+0x57): undefined reference to `odbx_error'
    collect2: ld returned 1 exit status
    make: *** [Pruebas] Error 1


    Those functions (odbx_error and odbx_init are both defined in odbx.h (the header of openDBX y need to include).

    I have checked that openDBX libraries are okey. There are in /usr/local/lib , /usr/local/lib/opendbx and /usr/local/lib/pkgconfig.

    My makefile is like this:

    Code:
    COMPILER = gcc
    
    CCFLAGS =	-O2 -g -Wall -fmessage-length=0 
    
    OBJS =		Prueba.o
    
    LIBS = 
    
    TARGET =	Pruebas
    
    LDFLAGS = -L/usr/local/lib -L/usr/local/lib/opendbx -L/usr/local/lib/pkgconfig
    
    $(TARGET):	$(OBJS)
    	${COMPILER} ${CCFLAGS} $(LDFLAGS) -o $(TARGET) $(OBJS) $(LIBS)
    
    all:	$(TARGET)
    
    clean:
    	rm -f $(OBJS) $(TARGET)
    
    
    So...can someone please tell what does this error mean ? i think that it doesn't found the library asosiated with de odbx.h, but i am not sure.

    Very thanks

    Mariano
     

Share This Page