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 指令是”。所以你似乎已经得到了 -lz 开关。通常我会说安装 zlib,但我有点困惑你没有得到 '/usr/bin/ld: cannot find -lz' 作为错误消息。您确定要提供与 splitwiki 编译相关的所有日志输出吗?

于 2013-08-06T19:39:20.060 回答