ZLIB 的编译问题 [英] Compilation problems with ZLIB
本文介绍了ZLIB 的编译问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想编译一些第三方软件,但显然我遇到了 ZLIB 的问题.
I would like to compile some third-party software but I encounter a problem with ZLIB apparently.
见下文:
$sudo make
gcc -Wall -pedantic -DVERSION=1.2 -lz -O3 sliding.o trim_single.o trim_paired.o sickle.o -o sickle
trim_paired.o: In function `ks_getuntil':
trim_paired.c:(.text+0x78): undefined reference to `gzread'
trim_paired.o: In function `kseq_read':
trim_paired.c:(.text+0x48d): undefined reference to `gzread'
trim_paired.c:(.text+0x4dc): undefined reference to `gzread'
trim_paired.c:(.text+0x60a): undefined reference to `gzread'
trim_paired.c:(.text+0x687): undefined reference to `gzread'
trim_paired.o: In function `paired_main':
trim_paired.c:(.text+0xc62): undefined reference to `gzopen'
trim_paired.c:(.text+0xc83): undefined reference to `gzopen'
trim_paired.c:(.text+0x1142): undefined reference to `gzclose'
trim_paired.c:(.text+0x114f): undefined reference to `gzclose'
trim_single.o: In function `ks_getuntil':
trim_single.c:(.text+0x78): undefined reference to `gzread'
trim_single.o: In function `single_main':
trim_single.c:(.text+0x688): undefined reference to `gzopen'
trim_single.c:(.text+0x8ad): undefined reference to `gzread'
trim_single.c:(.text+0x8f5): undefined reference to `gzread'
trim_single.c:(.text+0xb11): undefined reference to `gzread'
trim_single.c:(.text+0xb96): undefined reference to `gzread'
trim_single.c:(.text+0xc58): undefined reference to `gzclose'
collect2: ld returned 1 exit status
make: *** [build] Error 1
我使用的是 Ubuntu,我确实在/usr/local/lib 中安装了 ZLIB 1.2.6
I am using Ubuntu and I did install ZLIB 1.2.6 in /usr/local/lib
这是生成文件:
PROGRAM_NAME = sickle
VERSION = 1.2
CC = gcc
CFLAGS = -Wall -pedantic -DVERSION=$(VERSION)
DEBUG = -g
OPT = -O3
ARCHIVE = $(PROGRAM_NAME)_$(VERSION)
LDFLAGS = -lz
SDIR = src
.PHONY: clean default build distclean dist debug
default: build
sliding.o: $(SDIR)/sliding.c $(SDIR)/kseq.h $(SDIR)/sickle.h
$(CC) $(CFLAGS) $(OPT) -c $(SDIR)/$*.c
trim_single.o: $(SDIR)/trim_single.c $(SDIR)/sickle.h $(SDIR)/kseq.h
$(CC) $(CFLAGS) $(OPT) -c $(SDIR)/$*.c
trim_paired.o: $(SDIR)/trim_paired.c $(SDIR)/sickle.h $(SDIR)/kseq.h
$(CC) $(CFLAGS) $(OPT) -c $(SDIR)/$*.c
sickle.o: $(SDIR)/sickle.c $(SDIR)/sickle.h
$(CC) $(CFLAGS) $(OPT) -c $(SDIR)/$*.c
clean:
rm -rf *.o $(SDIR)/*.gch ./sickle
distclean: clean
rm -rf *.tar.gz
dist:
tar -zcf $(ARCHIVE).tar.gz src Makefile
build: sliding.o trim_single.o trim_paired.o sickle.o
$(CC) $(CFLAGS) $(LDFLAGS) $(OPT) $? -o sickle
debug:
$(MAKE) build "CFLAGS=-Wall -pedantic -g -DDEBUG"
感谢任何帮助;)
谢谢
推荐答案
我自己找到了答案!它的工作原理是改变:
I found the answer myself ! It works by changing:
$(CC) $(CFLAGS) $(LDFLAGS) $(OPT) $? -o sickle
到
$(CC) $(CFLAGS) $(OPT) $? -o sickle $(LDFLAGS)
-lz 选项必须在最后.
the -lz option has to be at the end.
这篇关于ZLIB 的编译问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文