“/ usr / bin / ld:找不到-lz”但存在libz

在基于Redhat的linux(amd64)上编写我的程序时,出现这个错误:

/usr/bin/ld: cannot find -lz collect2: ld returned 1 exit status 

search互联网显示,我没有安装zlib 32位版本。 快速search显示,我有这个包

 [root@localhost trunk]# find / -name libz* /lib64/libz.so.1 /lib64/libz.so.1.2.3 /lib/libz.so.1 /lib/libz.so.1.2.3 /usr/lib64/libz.so /usr/lib64/purple-2/libzephyr.so /usr/lib64/libzip.so.1.0.0 /usr/lib64/libzip.so.1 

正如你可以看到/lib/lib64都包含libz文件。 接下来,我试图findlddsearchpath,它显示包括32位和64位文件夹

 [root@localhost trunk]# ldconfig -v | grep -v ^$'\t' /usr/lib64/ctapi: /usr/lib64/mysql: /usr/lib64/tcl8.5/tclx8.4: /usr/lib64/xulrunner-2: /lib: /lib64: /usr/lib: /usr/lib64: /lib/i686: (hwcap: 0x0008000000000000) /lib64/tls: (hwcap: 0x8000000000000000) /usr/lib64/tls: (hwcap: 0x8000000000000000) /usr/lib64/sse2: (hwcap: 0x0000000004000000) /lib/i686/nosegneg: (hwcap: 0x0028000000000000) 

所以我想知道为什么我仍然得到这个错误!

UPDATE

我安装了zlib-devel (i686和x86_64),这里是确认

  [root@localhost trunk]# yum list zlib-devel Installed Packages zlib-devel.i686 1.2.3-27.el6 @sl zlib-devel.x86_64 1.2.3-27.el6 @sl 

但是,我仍然得到相同的错误。

更新2

修复不正确的符号链接后,我现在有

 [root@localhost trunk]# ls -l /lib/libz.so* lrwxrwxrwx. 1 root root 18 Feb 23 22:58 /lib/libz.so -> /usr/lib64/libz.so lrwxrwxrwx. 1 root root 13 Feb 18 12:06 /lib/libz.so.1 -> libz.so.1.2.3 -rwxr-xr-x. 1 root root 75332 Dec 10 2011 /lib/libz.so.1.2.3 

但是错误依然存在

我发现我必须安装静态库。 不知道为什么Makefilesearch静态库! 请参阅我的意见的包名称。

谢谢你的帮助

安装zlib-devel或将libz.so符号链接添加到lib目录。

yum list列出了所有的软件包,而不仅仅是安装的软件包。 要确定它是否已安装,请尝试以下操作:

 yum list installed | grep zlib 

这来自RHEL 6.3参考系统:

 # rpm -ql zlib-devel /usr/include/zconf.h /usr/include/zlib.h /usr/lib64/libz.so <---- the symlink I mentioned /usr/lib64/pkgconfig/zlib.pc /usr/share/doc/zlib-devel-1.2.3 /usr/share/doc/zlib-devel-1.2.3/README /usr/share/doc/zlib-devel-1.2.3/algorithm.txt /usr/share/doc/zlib-devel-1.2.3/example.c /usr/share/doc/zlib-devel-1.2.3/minigzip.c /usr/share/man/man3/zlib.3.gz # rpm -ql zlib-devel.i686 /usr/include/zconf.h /usr/include/zlib.h /usr/lib/libz.so <---- the symlink I mentioned /usr/lib/pkgconfig/zlib.pc /usr/share/doc/zlib-devel-1.2.3 /usr/share/doc/zlib-devel-1.2.3/README /usr/share/doc/zlib-devel-1.2.3/algorithm.txt /usr/share/doc/zlib-devel-1.2.3/example.c /usr/share/doc/zlib-devel-1.2.3/minigzip.c /usr/share/man/man3/zlib.3.gz 

符号链接指向的是:

 # ls /usr/lib/libz.so -lhA lrwxrwxrwx. 1 root root 23 Feb 23 20:32 /usr/lib/libz.so -> ../../lib/libz.so.1.2.3 # ls /usr/lib64/libz.so -lhA lrwxrwxrwx. 1 root root 25 Feb 23 20:24 /usr/lib64/libz.so -> ../../lib64/libz.so.1.2.3 

如果它帮助任何人 – 我的问题是cmake正在运行/usr/bin/g++ -static-libstdc++导致错误输出: /usr/bin/ld: cannot find -lstdc++

修复(在RHEL / CentOS上)是运行sudo yum install libstdc++-static.x86_64因为它正在寻找静态库。