2011-07-21 106 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

順便說一句,那工作。 –