2011-07-21 54 views
1

我正在尝试构建zpipe.c。我已经通过配置安装了zlib 1.2.5;使;进行安装。 我已将我的zpipe.c文件移动到其包含zlib.h头文件的实际zlib-1.2.5目录中。无法构建zpipe.c(Zlib示例程序)

这是我所得到的,当我尝试建立:

[[email protected] 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' 

自述好好尝试一下说具体谈谈构建在Linux上任何东西,我看到deflate.h和其他.h文件都位于在目录...

源头上zpipe.c是在这里:http://www.zlib.net/zpipe.c

任何想法? TIA

[[email protected] 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 

回答

12

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

gcc zpipe.c -lz 

这将libz.alibz.so(取决于你是否是静态或动态编译)编译,如果正确的话,这些目标文件应包含缺少的功能。

+0

-l对于以z启动的库? (根据手册页) –

+1

@ Mr-sk:zlib的库文件名为'libz.a'或'libz.so'。 '-l ___'是一个编译器选项,用于查找名为'lib ___。a'或'lib ___。so'的库文件。不要问我为什么这样。 – orlp

+0

顺便说一句,那工作。 –