0

システムで Wikiprep ユーティリティを構築しようとしています。ユーティリティをビルドしましたが、Splitwiki ユーティリティをビルドできません。インストール手順は次のとおりです。

splitwiki: splitwiki.c 
              gcc -Wall -O2 -lz -o $@ $<

実行時に次のエラー メッセージが表示されます。

/tmp/ccXeAIs1.o: In function `split':
splitwiki.c:(.text+0xac): undefined reference to `gzputs'
splitwiki.c:(.text+0xe3): undefined reference to `gzputs'
/tmp/ccXeAIs1.o: In function `main':
splitwiki.c:(.text.startup+0xab): undefined reference to `gzopen'
splitwiki.c:(.text.startup+0x10c): undefined reference to `gzclose'
collect2: ld returned 1 exit status
make: *** [splitwiki] Error 1

よくわかりませんが、どういうわけか、他のパッケージが不足していると言っています。よろしくお願いいたします。ありがとう。

4

1 に答える 1

0

gzputs() は zlib の一部です。おそらくzlibに対してリンクしていません。

現時点では、どのように splitwiki を構築しているのか疑問に思っています。wikiprep をビルドするときに、'make && make install' でビルドされることを期待していました。私の場合はそうではありません。splitwiki とすべての出力を構築するために使用しているコマンドラインを教えていただけますか?

更新:以下は私にとってはうまくいきます:

 $ cd tools/splitwiki
 $ make splitwiki LOADLIBES=-lz
 cc     splitwiki.c -lz  -o splitwiki    # this is make output
 $

説明: Makefile の処理の一部、README の説明の一部、またはsplitwikiの構築方法の指示を見つけることができませんでした。私の推測では、単に手動で行う必要があり、それがあなたが試した方法です。おそらく見逃していたのは「-lz」(zlib へのリンク) でした。あなたが使用することができた

 cc splitwiki.c -lz -o splitwiki 

直接。make を使用することは、コンパイラを呼び出す唯一の方法です :-)。

更新 2 : 申し訳ありませんが、昨日、"make install instruction is" という質問の一部を見逃していたようです。-lz スイッチを取得したようです。通常、私は zlib をインストールすると言いますが、エラー メッセージとして「/usr/bin/ld: cannot find -lz」が表示されないことに少し混乱しています。splitwiki のコンパイルに関連するすべてのログ出力を表示していますか?

于 2013-08-06T19:39:20.060 に答える