我正在尝试使用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
我错过了什么吗?
答案 0 :(得分:140)
您缺少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中的deflate压缩方法的库提供开发支持文件。
如果您已经zlib
库,请确保使用-lz
编译代码来源。请参阅:How to fix undefined references to inflate/deflate functions?。
答案 1 :(得分:15)
您缺少将 include 路径设置为放置zlib头文件的位置。设置LD_LIBRARY_PATH
环境变量用于动态链接共享对象(DLL,即以.so
结尾的文件)。
大多数编译器都有一个选项-I
来添加包含搜索路径。您可能希望使用-L
告诉编译器在哪里找到要链接的库,并使用-l
告诉编译器链接zlib。
E.g。
$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz
答案 2 :(得分: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
答案 3 :(得分:0)
在openSUSE 19.2中,安装patterns-hpc-development_node
软件包对我来说已经解决了这个问题。
答案 4 :(得分:0)
也许您可以从https://dev.w3.org/Amaya/libpng/zlib/zlib.h下载zlib.h,并将其放在目录中以解决问题。