74

我正在尝试使用 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

我错过了什么吗?

4

5 回答 5

191

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

sudo apt-get install libz-dev

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

sudo apt install zlib1g-dev

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

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

如果您已经zlib库,请确保您正在使用-lz. 请参阅:如何修复对 inflate/deflate 函数的未定义引用?.

于 2016-07-09T00:57:21.923 回答
20

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

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

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

总而言之,命令行应该看起来像

$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz
于 2013-08-09T13:44:43.507 回答
0

在 openSUSE 19.2 中安装patterns-hpc-development_node包为我解决了这个问题。

于 2020-08-09T06:50:52.300 回答
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
于 2020-07-23T17:18:41.693 回答
0

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

于 2020-12-16T10:06:50.833 回答