【问题标题】:Unable to build zpipe.c (Zlib sample program)无法构建 zpipe.c(Zlib 示例程序)
【发布时间】:2011-07-21 19:25:08
【问题描述】:

我正在尝试构建 zpipe.c。我已经通过配置安装了 zlib 1.2.5;制作;进行安装。 我已将我的 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'

README 没有具体说明如何在 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

【问题讨论】:

    标签: c linux gcc compression zlib


    【解决方案1】:

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

    gcc zpipe.c -lz
    

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

    【讨论】:

    • @Mr-sk:zlib 的库文件称为libz.alibz.so-l___ 是一个编译器选项,用于查找名为 lib___.alib___.so 的库文件。不要问我为什么会这样。
    • @Aditya Kumar:很高兴我能帮上忙 :)
    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2011-05-03
    • 2019-07-02
    相关资源
    最近更新 更多