编译错误 - 缺少zlib.h

78

我正在尝试使用IBM XL编译器在Blue Gene Q上编译软件,但出现了以下错误信息:

"iostreams/zlib.cpp", line 19.10: 1540-0836 (S) The #include file "zlib.h" is not found.
make[3]: *** [zlib.o] Error 1
我安装了一个新版本的zlib并更新了LD_LIBRARY_PATH$HOME/zlib/include,我是否漏掉了什么?
5个回答

197

你缺少 zlib.h 头文件,在 Linux 上可以通过以下方式安装:

sudo apt-get install libz-dev

事实上,模块在apt仓库中显示为zlib1g-dev,所以这是最新的调用(2019年2月):

sudo apt install zlib1g-dev

在Fedora中:sudo dnf install zlib-devel(在旧版本中:sudo dnf install libz-devel)可以提供一个库的开发支持文件,该库实现了在gzip和PKZIP中找到的缩放压缩方法。

如果您已经安装了zlib< / code>库,请确保使用 -lz 编译您的代码源。请参阅:如何修复对inflate / deflate函数的未定义引用?


4
我遇到了与 Fedora 25 相同的问题。解决方法是运行 sudo dnf install libz-devel - Krzysztof Czeronko
3
使用 Fedora 28,我必须执行 sudo dnf install zlib-devel 命令安装 zlib-devel。 - Alex Gyoshev
1
在尝试从Ruby的gem安装备份时,在Debian上遇到了相同的问题。 在mkmf.log中出现了fatal error: zlib.h: No such file or directoryzlib is missing; necessary for building libxml2的控制台中。 - Mtxz

22

您已经将库安装在非标准位置($HOME/zlib/)。这意味着编译器不知道您的头文件在哪里,因此您需要告诉编译器。

您可以使用 -I(大写字母 i)选项将路径添加到编译器用于搜索头文件的列表中。

还要注意,LD_LIBRARY_PATH 是用于运行时链接器和加载器的,在尝试运行应用程序时搜索动态库。要为构建时的链接器添加路径,请使用 -L 选项。

整个命令行应该如下所示:

$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz

9
鉴于提问者表示“我已经安装了一个新版本的zlib…”(重点在于“安装”),并将我的答案标记为已采纳,所以@SmallChess可以详细解释一下为什么。只是因为一个答案获得了更多的投票并不意味着它自动正确。 - Some programmer dude
4
我觉得大多数点赞 Kernob 回答的人,并没有完全阅读问题。 - searchengine27
1
问题说明zlib已安装,但没有提到dev zlib包。仅安装zlib二进制文件(在大多数发行版中)并不会安装zlib.h。然而,两个答案都完全回答了这个问题。大多数人可能不是使用zlib开发软件,而是通过编译安装软件。因此,下面的高票答案和上面的高级答案。 - TamusJRoyce

0
在 openSUSE 19.2 中,安装 patterns-hpc-development_node 软件包解决了我的问题。

0

0

我也遇到了同样的问题。然后我安装了zlib,但问题仍然存在。然后我在我的.bashrc文件中添加了以下几行代码,问题就解决了。你应该将路径替换为你的zlib安装路径。(我没有root权限)。

export PATH =$PATH:$HOME/Softwares/library/Zlib/zlib-1.2.11/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Softwares/library/Zlib/zlib-1.2.11/lib/
export LIBRARY_PATH=$LIBRARY_PATH:$HOME/Softwares/library/Zlib/zlib-1.2.11/lib/
export C_INCLUDE_PATH=$HOME/Softwares/library/Zlib/zlib-1.2.11/include/
export CPLUS_INCLUDE_PATH=$HOME/Softwares/library/Zlib/zlib-1.2.11/include/
export PKG_CONFIG_PATH=$HOME/Softwares/library/Zlib/zlib-1.2.11/lib/pkgconfig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接