无法构建zpipe.c(Zlib示例程序)

mr-*_*-sk 1 c linux compression gcc zlib

我正在尝试构建zpipe.c.我通过configure安装了zlib 1.2.5; 使; make install.我已将zpipe.c文件移动到实际的zlib-1.2.5目录中,其中包含zlib.h头文件.

这是我尝试构建时获得的:

[sk@lldma zlib-1.2.5]$ gcc zpipe.c 
/tmp/ccZ2OBz0.o: In function `def':
zpipe.c:(.text+0x3c): undefined reference to `deflateInit_'    
zpipe.c:(.text+0x8f): undefined reference to `deflateEnd'
zpipe.c:(.text+0xe2): undefined reference to `deflate'
zpipe.c:(.text+0x163): undefined reference to `deflateEnd'
zpipe.c:(.text+0x1df): undefined reference to `deflateEnd'
/tmp/ccZ2OBz0.o: In function `inf':
zpipe.c:(.text+0x22d): undefined reference to `inflateInit_'
zpipe.c:(.text+0x280): undefined reference to `inflateEnd'
zpipe.c:(.text+0x2c1): undefined reference to `inflate'
zpipe.c:(.text+0x312): undefined reference to `inflateEnd'
zpipe.c:(.text+0x36e): undefined reference to `inflateEnd'
zpipe.c:(.text+0x398): undefined reference to `inflateEnd'
Run Code Online (Sandbox Code Playgroud)

自述文件没有说明在Linux上构建的任何具体内容,我看到deflate.h和其他.h文件都位于目录中......

zpipe.c的源代码如下:http://www.zlib.net/zpipe.c

有任何想法吗?TIA

[sk@lldma zlib-1.2.5]$ ls
adler32.c       example64    infback.c      Makefile.in    watcom
adler32.lo      example64.o  infback.lo     make_vms.com   win32
adler32.o       example.c    infback.o      minigzip       zconf.h
amiga           example.o    inffast.c      minigzip64     zconf.h.cmakein
ChangeLog       examples     inffast.h      minigzip64.o   zconf.h.in
CMakeLists.txt  examplesh    inffast.lo     minigzip.c     zlib2ansi
compress.c      FAQ          inffast.o      minigzip.o     zlib.3
compress.lo     gzclose.c    inffixed.h     minigzipsh     zlib.3.pdf
compress.o      gzclose.lo   inflate.c      msdos          zlib.h
configure       gzclose.o    inflate.h      nintendods     zlib.map
contrib         gzguts.h     inflate.lo     old            zlib.pc
crc32.c         gzlib.c      inflate.o      qnx            zlib.pc.in
crc32.h         gzlib.lo     inftrees.c     README         zpipe.c
crc32.lo        gzlib.o      inftrees.h     treebuild.xml  zutil.c
crc32.o         gzread.c     inftrees.lo    trees.c        zutil.h
deflate.c       gzread.lo    inftrees.o     trees.h        zutil.lo
deflate.h       gzread.o     libz.a         trees.lo       zutil.o
deflate.lo      gzwrite.c    libz.so        trees.o
deflate.o       gzwrite.lo   libz.so.1      uncompr.c
doc             gzwrite.o    libz.so.1.2.5  uncompr.lo
example         INDEX        Makefile       uncompr.o
Run Code Online (Sandbox Code Playgroud)

orl*_*rlp 14

问题不在标题中,它编译得很好.问题是链接器无法找到库函数.尝试用这个编译:

gcc zpipe.c -lz
Run Code Online (Sandbox Code Playgroud)

这将使用libz.a或编译libz.so(取决于您是静态还是动态编译),如果正确,这些目标文件应包含缺少的函数.

  • @Mr-sk:zlib 的库文件称为`libz.a` 或`libz.so`。`-l___` 是一个编译器选项,用于查找名为 `lib___.a` 或 `lib___.so` 的库文件。不要问我为什么会这样。 (3认同)