当我尝试在我的 Ubuntu 12.04.3 64 位机器上编译 fasta36 时遇到了这个错误:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [fasta36] Error 1
我使用了以下命令:
make -f ../make/Makefile.linux64_sse2
我猜可能是由于缺少或符号链接损坏,因此尝试查找正确的文件。我在/usr/lib
目录中看到以下文件:
lrwxrwxrwx 1 root root 16 Nov 18 2011 libzbar.so.0 -> libzbar.so.0.2.0
-rw-r--r-- 1 root root 187480 Nov 18 2011 libzbar.so.0.2.0
lrwxrwxrwx 1 root root 25 Nov 12 18:54 libzeitgeist-1.0.so.1 -> libzeitgeist-1.0.so.1.1.4
-rw-r--r-- 1 root root 122048 May 4 2012 libzeitgeist-1.0.so.1.1.4
lrwxrwxrwx 1 root root 18 Nov 12 18:54 libzephyr.so.4 -> libzephyr.so.4.0.0
-rw-r--r-- 1 root root 55672 Apr 30 2011 libzephyr.so.4.0.0
lrwxrwxrwx 1 root root 23 Nov 26 2010 libzvbi-chains.so.0 -> libzvbi-chains.so.0.0.0
-rw-r--r-- 1 root root 60112 Nov 26 2010 libzvbi-chains.so.0.0.0
lrwxrwxrwx 1 root root 17 Nov 26 2010 libzvbi.so.0 -> libzvbi.so.0.13.1
-rw-r--r-- 1 root root 546768 Nov 26 2010 libzvbi.so.0.13.1
我不知道其中哪一个代表-lz
?
有人能帮我解决这个问题吗?我很感激你的时间和帮助。
答案1
那可能是您遗漏了或者未能发现的 libz.so。
$ locate libz
/lib/i386-linux-gnu/libz.so.1
/lib/i386-linux-gnu/libz.so.1.2.3.4
/lib/x86_64-linux-gnu/libz.so.1
/lib/x86_64-linux-gnu/libz.so.1.2.3.4
如果存在,请修复 makefile 中的库搜索路径。如果缺失,请从以下位置安装它(可能是 devl 包):
$ apt-file search libz.so
lib32z1: /usr/lib32/libz.so.1
lib32z1: /usr/lib32/libz.so.1.2.3.4
lib32z1-dev: /usr/lib32/libz.so
lsb-build-base3: /usr/lib/lsb3/libz.so
zlib1g: /lib/x86_64-linux-gnu/libz.so.1
zlib1g: /lib/x86_64-linux-gnu/libz.so.1.2.3.4
zlib1g-dbg: /usr/lib/debug/lib/libz.so.1.2.3.4
zlib1g-dbg: /usr/lib/debug/lib/x86_64-linux-gnu/libz.so.1.2.3.4
zlib1g-dbg: /usr/lib/debug/usr/lib32/libz.so.1.2.3.4
zlib1g-dev: /usr/lib/x86_64-linux-gnu/libz.so