【问题标题】:gnu make error after successful configure成功配置后 gnu 报错
【发布时间】:2012-09-09 20:34:08
【问题描述】:

我正在尝试构建依赖于 libtiff 的“lcms2”静态库。 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

【问题讨论】:

    标签: gnu-make libtiff


    【解决方案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_* 引用可以' t得到解决。链接 LCMS 对您没有帮助,因为 JBIG 没有链接到 JBIG,而只是被 JBIG 引用。

    在链接命令中添加-ljbig

    或者,手动编辑 Makefile 并将 -ljbig 添加到 LIBS(例如 LIBS = -ljbig)。

    【讨论】:

    • 我在配置时已经这样做了。您可以查看我上面的配置命令。
    • 我明白了;尽管如此,请查看您的链接命令。 JBIG 不存在。也许配置中有问题;我会尝试手动修改makefile。
    • 你是对的。我也认为配置坏了。我会尝试手动更新makefile。
    • 是的,配置已损坏。必须编辑 Makefile 并将 -ljbig 添加到 LIBS(例如 LIBS = -ljbig)。它现在正在编译,没有错误。谢谢 :)
    猜你喜欢
    • 2018-11-21
    • 2015-03-11
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多