2010-11-20 12 views
0

Also versuche ich LZO in meiner Anwendung zu verwenden. Hier ist, wie ich es enthalten:Problem mit LZO

#include "lzoconf.h" 
#include "lzodefs.h" 
#include "lzo1x.h" 
/* portability layer */ 
static const char *progname = NULL; 
#define WANT_LZO_MALLOC 1 
#define WANT_XMALLOC 1 
#include "portab.h" 

dann in der Anwendung, die ich tun:

if (lzo_init() != LZO_E_OK) 
{ 
    printf("internal error - lzo_init() failed !!!\n"); 
    printf("(this usually indicates a compiler bug - try recompiling\nwithout optimizations, and enable '-DLZO_DEBUG' for diagnostics)\n"); 
    return 4; 
} 

Es ok kompiliert. Keine Fehler oder Warnungen während der Kompilierung.

Wenn ich versuche, wenn meine Anwendung laufen zu lassen, gibt es zwei Fehler:

/home/richard/client/src/portab.h:145: undefined reference to `__lzo_align_gap' 

die an dieser Linie in portab.h Punkte:

if (__lzo_align_gap(p, (lzo_uint) sizeof(lzo_align_t)) != 0) 
{ 
    printf("%s: C library problem: malloc() returned mis-aligned pointer!\n", progname); 
    exit(1); 
} 
return p; 

Und in meiner Anwendung:

/home/richard/client/src/main.cc:108: undefined reference to `__lzo_init_v2' 

Was bedeutet:

if (lzo_init() != LZO_E_OK) 
{ 
    printf("internal error - lzo_init() failed !!!\n"); 
    printf("(this usually indicates a compiler bug - try recompiling\nwithout optimizations, and enable '-DLZO_DEBUG' for diagnostics)\n"); 
    return 4; 
} 

Ich habe alle Header-Dateien in meinem Quellverzeichnis:

config.h 
lzo1x.h 
lzoconf.h 
lzodefs.h 
miniacc.h 
portab.h 
portab_a.h 

Was mache ich falsch?

Ich kompiliere meine Anwendung in Ubuntu 10.10 in Anjuta ide.

Antwort

1

Header ist nicht genug, müssen Sie zu den Bibliotheken verknüpfen. Hast du die Dokumentation gelesen?

+0

Ja. Aber ich weiß nicht, wie ich die Bibliothek verlinken soll. Es ist dort nicht erwähnt. –

+0

@Richard: Hat die Anjuta IDE ein Tutorial, das etwas über "Bibliothekspfade" erwähnt? Ich habe noch nie von dieser IDE gehört und bin kein Linux-Experte, aber irgendwo im LZO-Verzeichnis sollten sich Dateien mit der Endung '.a 'befinden, oder? Vielleicht in einem Verzeichnis namens 'lib'? – fredoverflow

+0

nur eine Vermutung, aber ist Ihr LD_PATH Setup auf die LZO-Bibliothek zeigen ?, Echo $ LD_PATH für uns? – hhafez