Проблема с ЛЗО

Поэтому я пытаюсь использовать 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"

Затем в приложении я делаю:

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

Компилируется нормально. Никаких ошибок или предупреждений во время компиляции.

Когда я пытаюсь запустить свое приложение, возникают две ошибки:

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

Что указывает на эту строку в 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;

И в моем приложении:

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

Что указывает на:

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

У меня есть все файлы заголовков в моем исходном каталоге:

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

Что я делаю неправильно?

Я компилирую свое приложение в Ubuntu 10.10 в Anjuta ide.


person Richard Knop    schedule 20.11.2010    source источник


Ответы (1)


Заголовков недостаточно, нужны ссылки на библиотеки. Вы читали документацию?

person fredoverflow    schedule 20.11.2010
comment
да. Но я не знаю, как связать библиотеку. Там это не упоминается. - person Richard Knop; 21.11.2010
comment
@Richard: Есть ли в Anjuta IDE учебник, в котором упоминается что-нибудь о путях к библиотекам? Я никогда не слышал об этой IDE и не являюсь экспертом по Linux, но где-то в каталоге LZO должны быть файлы с расширением .a, верно? Может быть, в каталоге с именем lib? - person fredoverflow; 21.11.2010
comment
просто предположение, но ваша настройка LD_PATH указывает на библиотеку lzo?, эхо $LD_PATH для нас? - person hhafez; 21.11.2010