2010-11-20 3 views
0

J'essaie donc d'utiliser LZO dans mon application. Voici comment je l'ai inclus:Problème avec 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" 

Puis dans l'application que je fais:

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; 
} 

Il compile bien. Aucune erreur ou avertissement pendant la compilation.

Lorsque je tente de lancer ma demande cependant, il y a deux erreurs:

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

qui pointe sur cette ligne dans portab.h:

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; 

Et dans ma demande:

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

Ce qui indique:

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; 
} 

J'ai tous les fichiers d'en-tête à l'intérieur de mon répertoire source:

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

Qu'est-ce que je fais mal?

Je compile mon application sous Ubuntu 10.10 dans Anjuta ide.

Répondre

1

En-têtes ne suffit pas, vous devez lier aux bibliothèques. Avez-vous lu la documentation?

+0

Oui. Mais je ne sais pas comment lier la bibliothèque. Ce n'est pas mentionné ici. –

+0

@Richard: L'IDE d'Anjuta a-t-il un tutoriel qui mentionne quoi que ce soit à propos des "chemins de bibliothèque"? Je n'ai jamais entendu parler de cet IDE et je ne suis pas un expert Linux, mais il devrait y avoir des fichiers avec l'extension '.a' quelque part dans le répertoire LZO, n'est-ce pas? Peut-être dans un répertoire appelé 'lib'? – fredoverflow

+0

juste une supposition mais est votre installation LD_PATH jusqu'à pointer vers la bibliothèque lzo?, Echo $ LD_PATH pour nous? – hhafez