1

我正在使用 g++ 进行编译,但是当我运行 make 时,出现以下错误:

    ./libnbmdt.so: undefined reference to `inflateInit2_'
    ./libnbmdt.so: undefined reference to `zlibVersion'
    ./libnbmdt.so: undefined reference to `inflate'
    ./libnbmdt.so: undefined reference to `inflateInit_'
    ./libnbmdt.so: undefined reference to `inflateEnd'
    collect2: ld returned 1 exit status
    make[2]: *** [nbbid2md] Error 1
    make[1]: *** [all] Error 2
    make: *** [nb/nbmdt] Error 1

有没有人见过这个?我想-l<somelibrary>是需要的,但我不知道是哪一个……顺便说一句,它是一个 c++ 程序。我猜当 g++ 尝试链接它们时 zlib 丢失了?一些正在使用的库是:

MT_VLIBS = \
libjansson.a \
libnbI18N.a \
libnbslidlC.a \
libnbslidlS.a \
libcurl.a \
libVdb \
libnborb \
libnbbase \
-lvxul \
-lvxssl \
-lvxcrypto

不幸的是,我无法共享生成文件。谢谢

4

2 回答 2

1

你是对的 - “-lz”标志是要使用的标志。ZLib 没有链接,因此没有“膨胀”功能。

请注意以下几点:“-lz”必须在“-lnb*”之后,因为链接顺序对于 GCC 工具链很重要。

于 2012-06-04T17:55:05.377 回答
1

我今天通过在我的 makefile 中添加 $if 条件来解决问题,以使用 -lz 标志。这有点复杂,但我解决了。

于 2012-06-05T20:17:20.330 回答