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 はリンクされていないため、「インフレ」関数ではありません。

次の点に注意してください: GCC ツールチェーンではリンクの順序が重要であるため、「-lz」は「-lnb*」の後に配置する必要があります。

于 2012-06-04T17:55:05.377 に答える
1

-lz フラグを使用するために、makefile に $if 条件を追加することで、今日問題を解決しました。ちょっと複雑ですが、解決しました。

于 2012-06-05T20:17:20.330 に答える