链接make文件中的g ++和lib不起作用

时间:2012-06-04 17:39:19

标签: c++ linker g++

我正在用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

遗憾的是,我无法共享makefile。 感谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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