gnu делает ошибку после успешной настройки

Я пытаюсь создать статическую библиотеку lcms2, которая зависит от libtiff. libtiff снова зависит от libjbig. Я успешно настроил libtest со следующими параметрами:

CFLAGS="-fPIC" CXXFLAGS="-fPIC" LIBS="-ljbig" ./configure --prefix=/usr/local --enable-static=yes --enable-shared=no --with-zlib=yes --with-jpeg=yes --with-tiff=yes --with-pic=PIC

Настройка не сообщает об ошибке:

checking for TIFF support ... 
checking tiff.h usability... yes
checking tiff.h presence... yes
checking for tiff.h... yes
checking tiffio.h usability... yes
checking tiffio.h presence... yes
checking for tiffio.h... yes
checking for TIFFOpen in -ltiff... yes
checking for TIFFClientOpen in -ltiff... yes
checking for TIFFIsByteSwapped in -ltiff... yes
checking if TIFF package is complete... yes
checking tiffconf.h usability... yes
checking tiffconf.h presence... yes
checking for tiffconf.h... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating lcms2.pc
config.status: creating include/Makefile
config.status: creating src/Makefile
config.status: creating utils/tificc/Makefile
config.status: creating utils/transicc/Makefile
config.status: creating utils/linkicc/Makefile
config.status: creating utils/jpgicc/Makefile
config.status: creating utils/psicc/Makefile
config.status: creating testbed/Makefile
config.status: executing depfiles commands
config.status: executing libtool commands

Когда я делаю библиотеку, она выдает следующую ошибку:

/bin/sh ../../libtool --tag=CC   --mode=link gcc -std=gnu99  -fPIC   -o tificc tificc.o xgetopt.o vprf.o ../../src/liblcms2.la -ltiff -ljpeg -lz -lm 
libtool: link: gcc -std=gnu99 -fPIC -o tificc tificc.o xgetopt.o vprf.o  ../../src/.libs/liblcms2.a -ltiff -ljpeg -lz -lm
/usr/local/lib/libtiff.a(tif_jbig.o): In function `JBIGDecode':
tif_jbig.c:(.text+0xc4): undefined reference to `jbg_dec_init'
tif_jbig.c:(.text+0xe4): undefined reference to `jbg_newlen'
tif_jbig.c:(.text+0x116): undefined reference to `jbg_dec_in'
tif_jbig.c:(.text+0x12a): undefined reference to `jbg_strerror'
tif_jbig.c:(.text+0x177): undefined reference to `jbg_dec_getimage'
tif_jbig.c:(.text+0x188): undefined reference to `jbg_dec_getsize'
tif_jbig.c:(.text+0x1ac): undefined reference to `jbg_dec_free'
/usr/local/lib/libtiff.a(tif_jbig.o): In function `JBIGEncode':
tif_jbig.c:(.text+0x402): undefined reference to `jbg_enc_init'
tif_jbig.c:(.text+0x40d): undefined reference to `jbg_enc_out'
tif_jbig.c:(.text+0x418): undefined reference to `jbg_enc_free'
collect2: ld returned 1 exit status
make[1]: *** [tificc] Error 1

person Debjit    schedule 09.09.2012    source источник


Ответы (1)


libtool: ссылка: gcc -std=gnu99 -fPIC -o tificc tificc.o xgetopt.o vprf.o ../../src/.libs/liblcms2.a -ltiff -ljpeg -lz -lm

В команде компоновки нет ссылки на библиотеку JBIG (я не помню, должна ли она идти до или после - некоторые библиотеки требуют и того, и другого - ссылка на libtiff, -ltiff), поэтому jbg_* ссылки не могут быть разрешены. Связывание с LCMS не поможет вам, так как JBIG не связан, а только упоминается JBIG.

Добавьте -ljbig к команде ссылки.

Или вручную отредактируйте Makefile и добавьте -ljbig в LIBS (например, LIBS = -ljbig).

person LSerni    schedule 09.09.2012
comment
Я это уже сделал при настройке. Вы можете проверить мою команду настройки выше. - person Debjit; 10.09.2012
comment
Я вижу это; тем не менее, проверьте команду ссылки. JBIG там нет. Может быть, что-то сломалось в конфигурации; Я бы попробовал изменить makefile вручную. - person LSerni; 10.09.2012
comment
Ты прав. Я тоже думаю, что конфигурация сломана. Тогда я бы попытался вручную обновить make-файл. - person Debjit; 10.09.2012
comment
Да, конфигурация сломана. Пришлось отредактировать Makefile и добавить -ljbig в LIBS (например, LIBS = -ljbig). Сейчас компилируется без ошибок. Спасибо :) - person Debjit; 12.09.2012