编译错误-缺少 zlib.h

我正在尝试使用 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,并用 $HOME/zlib/include更新了 LD_LIBRARY_PATH

我错过了什么吗?

137356 次浏览

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

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

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

命令行看起来应该是这样的

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

你丢失了 zlib.h头文件,在 Linux 上通过以下方式安装:

sudo apt-get install libz-dev

事实上,该模块在 apt repo 中以 zlib1g-dev的形式出现,所以这是最新的调用(2019年2月) :

sudo apt install zlib1g-dev

在 Fedora 上: sudo dnf install zlib-devel(旧版本: sudo dnf install libz-devel)。

这将为实现 gzip 和 PKZIP 中的平坦压缩方法的库提供开发支持文件。

如果您已经有了 zlib库,请确保您正在使用 -lz编译代码源。

我也有同样的问题。然后我安装了 zlib,但问题仍然没有改变。然后,我在。巴希尔和它的工作。您应该用 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

在 openSUSE 19.2中,安装 patterns-hpc-development_node包为我修复了这个问题。

也许您可以从 https://dev.w3.org/Amaya/libpng/zlib/zlib.h下载 zlib.h,并将其放在目录中以解决这个问题。